<?php

App::uses('generarPDF', 'Vendor/mpdf');

class SigespController extends AppController {

    var $name = 'Sigesp';
    var $uses = array('Biometrico','Tienda', 'Integrador', 'Reporte', 'Postgres', 'PrePrecioArticulos', 'ReporteSql', 'PrecioArticulos', 'ArchivoPrecios', 'Logsql', 'PreArchivoPrecios', 'LogPrecio', 'AjusteInventario', 'ControlInventario');
    //var $uses = array('Usuario','Bitacora','Organizacion','Telfgasto');
    var $helpers = array('Html', 'Ajax', 'Javascript', 'Vista', 'Interfaz', 'Json');
    //public $helpers = array('PhpExcel.PhpExcel'); 
    var $layout = "ajax";
    var $components = array('Utilitario', 'Interfaz', 'Vista', 'Query'/* ,'RequestHANDler','DebugKit.Toolbar' */);

    function beforeFilter() {
        $this->validar();
    }

    function jobs($excel = null) {
        $this->permisos_menu_individual('REVISION DE JOBS');
        $this->Vista->title('Jobs del sistema SIGESP');
        echo "<script type='text/javascript'>document.getElementById('buscadorindex').value='BLOQUEADO';
		document.getElementById('buscadorindex').disabled = true;</script>";

        if (!isset($excel)) {
            $this->Vista->title('Movimientos de Materiales');
            echo "<script type='text/javascript'>
							document.getElementById('buscadorindex').value='BLOQUEADO';
							document.getElementById('buscadorindex').disabled = true;</script>";
        }

//$jobs=$this->Postgres->query($sql);
        $usuario = "jcarrizalez";
        $clave = "@andrea2810";
        $servidor = "192.168.66.11";

        $archivo = '.jobs.acakephp' . date('is');
        $archivo2 = '.jobs.acakephp2' . date('is');
       echo  $salida = shell_exec("echo '' > $archivo;export PGPASSWORD='$clave';psql -h $servidor -p 5432 -U \"$usuario\" -c \"select jobid as id,
        jobname as nombre_job,
        -- case
        --        when jobenabled=true then 'ACTIVO'
        --else 'INACTIVO'
        --end as  
        jobenabled as status_job,
        jobcreated as creado,
        joblastrun as ultima_ejecucion,
        jobnextrun as proxima_ejecucion,
        jobdesc as descripcion
from pgagent.pga_job j order by proxima_ejecucion\" \"postgres\" >> $archivo;
sed '/---+---/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/nombre_job/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/rows)/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/row)/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/filas)/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/^$/d' $archivo > $archivo2;mv $archivo2 $archivo;
  
");


        $jobs = array();
        $file = fopen("$archivo", "r") or exit("");

        $c = 0;
        while (!feof($file)) {
            $linea = fgets($file);
            //echo $linea. "<br />";
            $linea = explode("|", $linea);

            if (trim($linea[0]) != '') {
                $jobs[$c]['id'] = trim($linea[0]);
                $jobs[$c]['nombre_job'] = trim($linea[1]);
                if (trim($linea[2]) == "t")
                    $linea[2] = "activo";
                
                    else$linea[2] = "inactivo";

                $jobs[$c]['status_job'] = trim($linea[2]);
                $jobs[$c]['creado'] = trim($linea[3]);
                $jobs[$c]['ultima_ejecucion'] = trim($linea[4]);
                $jobs[$c]['proxima_ejecucion'] = trim($linea[5]);
                $jobs[$c]['descripcion'] = trim($linea[6]);
            }
            $c++;
        }
        fclose($file);

        if (file_exists($archivo)) {
            if (unlink($archivo)) {
                
            }
        }


        $archivo = '.jobs.axcakephp' . date('is');
        $archivo2 = '.jobs.axcakephp2' . date('is');
        $salida = shell_exec("echo '' > $archivo;export PGPASSWORD='$clave';psql -h $servidor -p 5432 -U \"$usuario\" -c \"
SELECT jlgjobid,jlgstatus from pgagent.pga_joblog WHERE jlgstart in (SELECT max(jlgstart) from pgagent.pga_joblog group by jlgjobid) order by jlgjobid
\" \"postgres\" >> $archivo;
sed '/---+---/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/jlgstatus/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/rows)/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/row)/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/filas)/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/^$/d' $archivo > $archivo2;mv $archivo2 $archivo;
  
");


        $jobslog = array();
        $file = fopen("$archivo", "r") or exit("");

        $c = 0;
        while (!feof($file)) {
            $linea = fgets($file);
            //echo $linea. "<br />";
            $linea = explode("|", $linea);

            if (trim($linea[0]) != '') {
                $jobslog[$c]['id'] = trim($linea[0]);
                $jobslog[$c]['status'] = trim($linea[1]);
            }
            $c++;
        }
        fclose($file);

        if (file_exists($archivo)) {
            if (unlink($archivo)) {
                
            }
        }


        $array = array();

        for ($i = 0; $i < count($jobs); $i++) {

            for ($j = 0; $j < count($jobslog); $j++) {

                if ($jobs[$i]['id'] == $jobslog[$j]['id']) {
                    //	echo $jobslog[$i]['id'].'<br>';
                    $array[$i]['id'] = $jobs[$i]['id'];
                    $array[$i]['nombre_job'] = $jobs[$i]['nombre_job'];
                    $array[$i]['status_job'] = $jobs[$i]['status_job'];
                    $array[$i]['creado'] = $jobs[$i]['creado'];
                    $array[$i]['ultima_ejecucion'] = $jobs[$i]['ultima_ejecucion'];
                    $array[$i]['proxima_ejecucion'] = $jobs[$i]['proxima_ejecucion'];
                    $array[$i]['descripcion'] = $jobs[$i]['descripcion'];
                    $array[$i]['status'] = $jobslog[$j]['status'];
                }
            }
        }

        $this->set('data', $array);
        //	$this->set('tiendas',$tiendas);
        $this->set('busq', '');
        $this->log();
    }

    public function registro_jobs($idjob = null, $nombre_job = null, $status_job = null) {

        $idjob = $this->Interfaz->id($idjob);
        $nombre_job = $this->Interfaz->id($nombre_job);
        $status_job = $this->Interfaz->id($status_job);
        $this->set('idjob', $idjob);
        $this->set('nombre_job', $nombre_job);
        $this->set('status_job', $status_job);
//echo $idjob." - ".$nombre_job." - ".$status_job;
        $this->set('div', DLOAD);
        $this->set('divlistado', DOCULTO);
        $this->set('fecha', '2013-05-13');





/////
        $usuario = "jcarrizalez";
        $clave = "@andrea2810";
        $servidor = "192.168.66.11";

        $archivo = '.jobs.bcakephp' . date('is');
        $archivo2 = '.jobs.bcakephp2' . date('is');
        $salida = shell_exec("echo '' > $archivo;export PGPASSWORD='$clave';psql -h $servidor -p 5432 -U \"$usuario\" -c \"
select  jlgid as id,
        j.jobname as nombre_job,
        case
                when jl.jlgstatus='r' then 'EJECUTANDOSE'
                when jl.jlgstatus='s' then 'SE EJECUTO EXITOSAMENTE'
                when jl.jlgstatus='f' then 'FALLO'
                when jl.jlgstatus='d' then 'ABORTADO'
                when jl.jlgstatus='i' then 'SIN PASOS PARA EJECUTAR'
        end as status,
       -- to_char(jl.jlgstart,'YYYY-MM-DD HH:MI:SS') as inicio,
					jl.jlgstart as inicio,
        jl.jlgduration as duracion_hora_min_seg
from pgagent.pga_joblog jl,
        pgagent.pga_job j
where jl.jlgjobid=j.jobid
        and j.jobid=$idjob
				and jl.jlgstart::date between (now() - interval '10 day') and 'now()'
        --and extract(year from jl.jlgstart)=2013
        --and extract(month from jl.jlgstart)=8
        --and extract(day from jl.jlgstart)=15
order by inicio desc -- LIMIT 20
\" \"postgres\" >> $archivo;
sed '/---+---/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/nombre_job/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/rows)/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/row)/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/filas)/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/^$/d' $archivo > $archivo2;mv $archivo2 $archivo;
  
");


        $jobs = array();
        $file = fopen("$archivo", "r") or exit("");

        $c = 0;
        while (!feof($file)) {
            $linea = fgets($file);
//	echo $linea. "<br />";
            $linea = explode("|", $linea);
            //id
//nombre_job
//status
//inicio
//duracion_hora_min_seg 




            if (trim($linea[0]) != '') {
                $jobs[$c]['id'] = trim($linea[0]);
                $jobs[$c]['nombre_job'] = trim($linea[1]);
//if(trim($linea[2])=="t")$linea[2]="activo";else$linea[2]="inactivo";

                $jobs[$c]['status'] = trim($linea[2]);
                //$jobs[$c]['creado']=trim($linea[5]);
                $jobs[$c]['inicio'] = trim($linea[3]);
                $jobs[$c]['duracion_hora_min_seg'] = trim($linea[4]);
//	$jobs[$c]['descripcion']=trim($linea[6]);
            }
            $c++;
        }
        fclose($file);

        if (file_exists($archivo)) {
            if (unlink($archivo)) {
                
            }
        }
///////


        $this->set('data', $jobs);
        //	$this->set('tiendas',$tiendas);
        $this->set('busq', '');
        $this->log();
    }

    public function cambiar_status_jobs($idjob = null, $status_job = null) {


        $idjob = $this->Interfaz->id($idjob);
        $status_job = $this->Interfaz->id($status_job);

//echo $idjob;//.' - '.$status_job;



        $usuario = "jcarrizalez";
        $clave = "@andrea2810";
        $servidor = "192.168.66.11";



/// consulta
        $archivo = '.jobs.ccakephp' . date('is');
        $archivo2 = '.jobs.ccakephp2' . date('is');
        $salida = shell_exec("echo '' > $archivo;export PGPASSWORD='$clave';psql -h $servidor -p 5432 -U \"$usuario\" -c \"
SELECT  jobid,jobname, jobenabled FROM pgagent.pga_job WHERE jobid='$idjob';
\" \"postgres\" >> $archivo;
sed '/---+---/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/jobenabled/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/rows)/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/row)/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/filas)/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/^$/d' $archivo > $archivo2;mv $archivo2 $archivo;
  
");


        $jobs = array();
        $file = fopen("$archivo", "r") or exit("");

        $c = 0;
        while (!feof($file)) {
            $linea = fgets($file);
//	echo $linea. "<br />";
            $linea = explode("|", $linea);


            if (trim($linea[0]) != '') {
                $jobs[$c]['jobenabled'] = trim($linea[2]);
            }
            $c++;
        }
        fclose($file);
        if (file_exists($archivo)) {
            if (unlink($archivo)) {
                
            }
        }
/// consulta
        $archivo = '.jobs.xcakephp' . date('is');
        if ($jobs[0]['jobenabled'] == 't') {
            $cond = 1;

            $salida = shell_exec("export PGPASSWORD='$clave';psql -h $servidor -p 5432 -U \"$usuario\" -c \"
UPDATE pgagent.pga_job SET jobenabled=false WHERE jobid='$idjob'\" \"postgres\" > $archivo;");
            if (file_exists($archivo)) {
                if (unlink($archivo)) {
                    
                }
            }
        } else {
            $cond = 0;

            $salida = shell_exec("export PGPASSWORD='$clave';psql -h $servidor -p 5432 -U \"$usuario\" -c \"
UPDATE pgagent.pga_job SET jobenabled=true WHERE jobid='$idjob'\" \"postgres\" > $archivo;");
            if (file_exists($archivo)) {
                if (unlink($archivo)) {
                    
                }
            }
        }



        $this->set('cond', $cond);
    }

    public function jobs_error($idjob = null, $nombre_job = null) {

        $idjob = $this->Interfaz->id($idjob);
        $nombre_job = $this->Interfaz->id($nombre_job);

        $this->set('idjob', $idjob);
        $this->set('nombre_job', $nombre_job);

        $this->set('div', DLOAD);
        $this->set('divlistado', DOCULTO);





/////
        $usuario = "jcarrizalez";
        $clave = "@andrea2810";
        $servidor = "192.168.66.11";

        $archivo = '.jobs.bxcakephp' . date('is');
        $archivo2 = '.jobs.bxcakephp2' . date('is');
        $salida = shell_exec("echo '' > $archivo;export PGPASSWORD='$clave';psql -h $servidor -p 5432 -U \"$usuario\" -c \"
SELECT  jsloutput FROM pgagent.pga_jobsteplog WHERE jsljlgid='$idjob'
\" \"postgres\" >> $archivo;
sed '/---+---/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/jsloutput/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/rows)/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/row)/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/filas)/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/^$/d' $archivo > $archivo2;mv $archivo2 $archivo;
  
");


        $jobserror = array();
        $file = fopen("$archivo", "r") or exit("");

        $c = 0;
        while (!feof($file)) {
            $linea = fgets($file);

            $linea = explode("xcxxxxxcddd", $linea);

            if (trim($linea[0]) != '') {
                $jobserror[$c]['jsloutput'] = trim($linea[0]);
            }
            $c++;
        }
        fclose($file);


        if (file_exists($archivo)) {
            if (unlink($archivo)) {
                
            }
        }

        $this->set('data', $jobserror);
        //	$this->set('tiendas',$tiendas);
        $this->set('busq', '');
        $this->log();
    }

    function cierre_de_caja() {
        $this->permisos_menu_individual('cierres de cajas'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
        $this->Vista->title('Listado de Cierre de Caja');
        echo "<script type='text/javascript'>
			document.getElementById('buscadorindex').value='BLOQUEADO';
			document.getElementById('buscadorindex').disabled = true;
			</script>";
    }

    public function correlativos_caja() {
        $this->permisos_menu_individual('CORRELATIVOS DE CAJA'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
        $this->Vista->title('Listado  de Correlativos de Caja');
        echo "<script type='text/javascript'>document.getElementById('buscadorindex').value='BLOQUEADO';
		document.getElementById('buscadorindex').disabled = true;</script>";
    }

    public function filtrado_correlativos_caja($div = 'vista', $divlistado = 'vista') {
        $this->Vista->title('Listado con Filtro de Correlativos');
        echo "<script type='text/javascript'>document.getElementById('buscadorindex').value='BLOQUEADO';
		document.getElementById('buscadorindex').disabled = true;</script>";

        $this->set('div', $div);
        $this->set('divlistado', $divlistado);
        $tiendas = $this->Tienda->find('all', array("conditions" => array("Tienda.estatus " => 1, "Tienda.central" => 0), 'order' => 'codigo Asc'));

        $tienda = array();
        $tienda['TODOS'] = 'Todas las Tiendas';
        foreach ($tiendas as $key => $value) {
            $tienda[$value['Tienda']['codigo']] = $value['Tienda']['codigo'] . ' - ' . $value['Tienda']['nombre'];
        }
        $this->set('tienda', $tienda);
    }

    public function listado_filtrado_correlativos_caja() {
        extract($this->request->data);
        $id_ven = $this->request->data['vent'];

        $this->Vista->title('Listado con Filtro de Correlativos');
        echo "<script type='text/javascript'>document.getElementById('buscadorindex').value='BLOQUEADO';
		document.getElementById('buscadorindex').disabled = true;</script>";

        $sql = $this->Query->correlativos_caja();
        $td = $this->Tienda->find('list', array('fields' => array('Tienda.codigo', 'Tienda.nombre'), 'order' => 'Tienda.id Asc'));
        if (in_array('TODOS', $this->request->data['tienda'])) {
            $tienda = $this->Tienda->find('all', array("conditions" => array("Tienda.estatus " => 1, "Tienda.central" => 0), 'order' => 'codigo desc'));
            $array = array();
            for ($z = 0; $z < count($tienda); $z++) {
                $array[] = $tienda[$z]['Tienda']['codigo'];
            }
        } else {
            $array = $this->request->data['tienda'];
        }

        $data = $this->Query->app('Sigesp', $array, $sql);

        if (count($data) > 0)
            $this->Vista->cerrar_ventana($id_ven);

        $this->set('tienda', $td);
        $this->set('data', $data);
        $this->set('busq', '');
        $this->log();
    }

    function movimiento_de_materiales($excel = null) {
        $this->permisos_menu_individual('Movimientos de Materiales'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
        $this->Vista->title('Movimiento de Materiales');
        echo "<script type='text/javascript'>document.getElementById('buscadorindex').value='BLOQUEADO';
		document.getElementById('buscadorindex').disabled = true;</script>";

        if (!isset($excel)) {
            $this->Vista->title('Movimientos de Materiales');
            echo "<script type='text/javascript'>
							document.getElementById('buscadorindex').value='BLOQUEADO';
							document.getElementById('buscadorindex').disabled = true;</script>";
        }


        $sql = $this->Query->movimiento_de_materiales();
        $array = array('integrador');
        //$data=$this->Query->app('Integrador',$array,$sql);


        $array = $this->Integrador->query($sql);

        $data = array();
        $tiendas = array();
        $tiendas = $this->Tienda->find('all', array("conditions" => array("Tienda.estatus" => 1, "Tienda.central" => 0)));
        $tienda = $this->Tienda->find('list', array('fields' => array('Tienda.codigo', 'Tienda.nombre'), 'order' => 'Tienda.id Asc'));

        for ($i = 0; $i < count($array); $i++) {

            /* 	
              for($z=0; $z<count($array[$i]); $z++){
              $array[$i][$z]['nombre']=$tienda[$array[$i][$z]['cenrec']];
              $data[]=$array[$i][$z];
              }
             */
            $array[$i][0]['nombre'] = $tienda[$array[$i][0]['cenrec']];
            $data[] = $array[$i][0];
        }

        $this->set('data', $data);
        $this->set('tiendas', $tiendas);
        $this->set('busq', '');
        $this->log();
    }

    public function movimiento_de_materiales_ver($tien = null, $fecha = null) {
        $this->permisos_opcion_individual('Movimientos de Materiales','estatus','ver');
        $this->set('div', DLOAD);
        $this->set('divlistado', DOCULTO);

        $tien = $this->Interfaz->id($tien);
        $fecha = $this->Interfaz->id($fecha);

        $sql = $this->Query->movimiento_de_materiales_individual($tien, $fecha);
        $array = array('integrador');
        $array = $this->Integrador->query($sql);
        $data = array();
        $tiendas = array();
        $tiendas = $this->Tienda->find('all', array("conditions" => array("Tienda.estatus" => 1, "Tienda.central" => 0)));
        $tienda = $this->Tienda->find('list', array('fields' => array('Tienda.codigo', 'Tienda.nombre'), 'order' => 'Tienda.id Asc'));

        for ($i = 0; $i < count($array); $i++) {
            $array[$i][0]['nombre'] = $tienda[$array[$i][0]['cenrec']];
            $data[] = $array[$i][0];
        }

        $this->set('data', $data);
        $this->set('tiendas', $tiendas);
        $this->set('tienda', $tien);
        $this->set('fecha', $fecha);
    }

    public function movimientos_bloquear_material($nrodoc = null, $codart = null, $tienda = null, $fecha = null) {
        $nrodoc = $this->Interfaz->id($nrodoc);
        $codart = $this->Interfaz->id($codart);
        $tiendaxc = $this->Interfaz->id($tienda);
        $fecha = $this->Interfaz->id($fecha);
        /*
          echo 				$nrodoc;
          echo '<br>'.$codart;
          echo '<br>'.$tienda;
          echo '<br>'.$fecha;
         */
        $sql = $this->Query->select_movimiento_de_materiales_individual_estatus($nrodoc, $codart, $tiendaxc, $fecha);
        $array = array('integrador');
        $array = $this->Integrador->query($sql);
        $data = array();
        $tiendas = array();
        $tiendas = $this->Tienda->find('all', array("conditions" => array("Tienda.estatus" => 1, "Tienda.central" => 0)));
        $tienda = $this->Tienda->find('list', array('fields' => array('Tienda.codigo', 'Tienda.nombre'), 'order' => 'Tienda.id Asc'));

        for ($i = 0; $i < count($array); $i++) {
            $array[$i][0]['nombre'] = $tienda[$array[$i][0]['cenrec']];
            $data[] = $array[$i][0];
        }

//echo $data[0]['stareg'];
        if ($data[0]['stareg'] == 'N') {
            $sql = $this->Query->update_movimiento_de_materiales_individual_estatus($nrodoc, $codart, $tiendaxc, $fecha, 'B');
            $array = array('integrador');
            $array = $this->Integrador->query($sql);
            $imagen = 'si';
        }
        if ($data[0]['stareg'] == 'B') {
            //$sql = $this->Query->update_movimiento_de_materiales_individual_estatus($nrodoc, $codart, $tiendaxc, $fecha, 'N');
            //$array = array('integrador');
            //$array = $this->Integrador->query($sql);
            $imagen = 'si';
        }
//echo 		 $imagen;
        $this->set('imagen', $imagen);
    }

    public function movimiento_de_materiales_filtro() {
        $this->permisos_accion_individual('Movimientos de Materiales','filtro');
    }
    
    public function movimiento_de_materiales_busqueda() {
        $this->permisos_opcion_individual('Movimientos de Materiales','filtro','modificar');
        if($this->request->data && (!empty($this->request->data['documento']) || !empty($this->request->data['fechaMat']))){
            extract($this->request->data);
            $vent = $this->Interfaz->id($id_vent);
            empty($fechaMat) ? $fecha = $fechaMat : $fecha = date("Y-m-d", strtotime($fechaMat));
            $tienda = $this->Tienda->find('list', array('fields' => array('Tienda.codigo', 'Tienda.nombre'), 'order' => 'Tienda.id Asc'));
                if(empty($documento) && !empty($fecha)){
                    $sql="SELECT * FROM interfaces.int_archivos_movimientos WHERE fecmov::date='$fecha'";
                }else if(empty($fecha) && !empty($documento)){
                    $documento=eregi_replace("[\n|\r|\n\r]", "','", trim($documento));
                    $sql="SELECT * FROM interfaces.int_archivos_movimientos WHERE nrodoc IN ('$documento')";
                    //$sql="SELECT * FROM interfaces.int_archivos_movimientos WHERE nrodoc='$documento'";
                }else{
                    $sql="SELECT * FROM interfaces.int_archivos_movimientos WHERE fecmov::date='$fecha' AND nrodoc='$documento'";
                }
            $array = $this->Integrador->query($sql);
            for ($i = 0; $i < count($array); $i++) {
                $array[$i][0]['nombre'] = $tienda[$array[$i][0]['cenrec']];
                $data[] = $array[$i][0];
            }
            if(!empty($data)){
                $this->Vista->cerrar_ventana($vent);
                $this->set('data', $data);
                $this->set('fecha', $fechaMat);
                $this->set('documento', $documento);
            }else{
                $this->autoRender = False;
                $this->Vista->mensaje('No existe el Numero de Documento o datos en esa fecha', 'ERROR');
            }
            
        }else{
            $this->autoRender = False;
            $this->Vista->mensaje('Faltan campos por llenar', 'ERROR');
        }
    }
    
    public function filtrado_cierre_de_caja($div = 'vista', $divlistado = 'vista') {
        $this->Vista->title('Listado con Filtro de Cierre de Caja');
        echo "<script type='text/javascript'>document.getElementById('buscadorindex').value='BLOQUEADO';
		document.getElementById('buscadorindex').disabled = true;</script>";

        $this->set('div', $div);
        $this->set('divlistado', $divlistado);
        //	$tiendas=$this->Tienda->find('all',array('Tienda.estatus'=>'1','Tienda.central'=>'0','order'=>'Tienda.codigo Asc'));

        $tiendas = $this->Tienda->find('all', array("conditions" => array("Tienda.estatus " => 1, "Tienda.central" => 0), 'order' => 'codigo Asc'));
        //   $tienda=$this->Tienda->find('list', array('fields'=> array('Tienda.nombre', 'Tienda.codigo'), 'order'=>'Tienda.id Asc'));


        $tienda = array();
        $tienda['TODOS'] = 'Todas las Tiendas';
        foreach ($tiendas as $key => $value) {
            $tienda[$value['Tienda']['codigo']] = $value['Tienda']['codigo'] . ' - ' . $value['Tienda']['nombre'];
        }
        $this->set('tienda', $tienda);
    }

    public function listado_filtrado_cierre_de_caja() {


        extract($this->request->data);
        $id_ven = $this->request->data['vent'];
        $fi = $this->request->data['fecha_i'];
        $vfi = $$fi;
        $ff = $this->request->data['fecha_f'];
        $vff = $$ff;

        $this->Vista->title('Listado con Filtro de Cierre de Caja');
        echo "<script type='text/javascript'>document.getElementById('buscadorindex').value='BLOQUEADO';
		document.getElementById('buscadorindex').disabled = true;</script>";

        if (empty($vfi) and empty($vff)) {
            $vfi = date('Y-m-d');
            $vff = date('Y-m-d');
        } else if (!empty($vfi) and empty($vff)) {
            $vfi = $this->Utilitario->guar_fecha($vfi);
            $vff = $vfi;
        } else if (empty($vfi) and !empty($vff)) {
            $vff = $this->Utilitario->guar_fecha($vff);
            $vfi = $vff;
        } else {
            if ($this->diferencias_dias($this->Utilitario->guar_fecha($vfi), $this->Utilitario->guar_fecha($vff)) < 0) {
                $a_ = $vfi;
                $vfi = $this->Utilitario->guar_fecha($vff);
                $vff = $this->Utilitario->guar_fecha($a_);
            } else {
                $vfi = $this->Utilitario->guar_fecha($vfi);
                $vff = $this->Utilitario->guar_fecha($vff);
            }
        }
        $sql = $this->Query->cierres_detallado($vfi, $vff);

        if (in_array('TODOS', $this->request->data['tienda'])) {

            $tienda = $this->Tienda->find('all', array("conditions" => array("Tienda.estatus " => 1, "Tienda.central" => 0), 'order' => 'codigo desc'));


            $array = array();
            for ($z = 0; $z < count($tienda); $z++) {
                $array[] = $tienda[$z]['Tienda']['codigo'];
            }
        } else {

            $array = $this->request->data['tienda'];
        }

        $data = $this->Query->app('Sigesp', $array, $sql);
        if (count($data) > 0)
            $this->Vista->cerrar_ventana($id_ven);
        $this->set('data', $data);
        $this->set('busq', '');
        $this->log();
    }

    public function nuevo($div = 'vista', $divlistado = 'vista', $id = null) {
        if (isset($id)) {
            $per = $this->Interfaz->id($id);
            $this->set('periodo', $this->Periodo->find('first', array('conditions' => array("Periodo.id" => $per))));
        }
        $this->set('div', $div);
        $this->set('divlistado', $divlistado);
    }

    function busqueda_filtros($nombrebuscar = null, $vfibuscar = null, $vffbuscar = null) {
        $this->Vista->title('Listado de Periodos Filtrado');
        $condiciones = array();
        if (!empty($nombrebuscar))
            $condiciones['UPPER(Periodo.nombre) like '] = '%' . $nombrebuscar . '%';
        if (!empty($vfibuscar) and !empty($vffbuscar))
            $condiciones['Periodo.desde between ? and ?'] = array($vfibuscar, $vffbuscar);
        else if (!empty($vfibuscar) and empty($vffbuscar))
            $condiciones['Periodo.desde between ? and ?'] = array($vfibuscar, $vfibuscar);
        else if (empty($vfibuscar) and !empty($vffbuscar))
            $condiciones['Periodo.hasta between ? and ?'] = array($vffbuscar, $vffbuscar);
        $data = $this->Periodo->find('all', array("conditions" => $condiciones));
        $this->set('data', $data);
        $this->log();
        return count($data);
    }

    public function guardarnuevo() {
        extract($this->request->data);
        $id_ven = $this->request->data['vent'];
        $fi = $this->request->data['fecha_i'];
        $vfi = $$fi;
        $ff = $this->request->data['fecha_f'];
        $vff = $$ff;
        $data = $this->Interfaz->data($this->request->data);
        if ($this->Vista->empyt($data)) {
            $this->Vista->mensaje('Faltan datos Basicos Para Registrar Periodos', 'ERROR');
        } else if ($this->diferencias_dias($this->Utilitario->guar_fecha($vfi), $this->Utilitario->guar_fecha($vff)) < 0) {
            $this->Vista->monta_imagem($fi, 'Fecha Invalida');
            $this->Vista->mensaje('La fecha de Inicio no Puede ser Posterior a la fecha de Fin', 'ERROR');
        } else {

            if ($this->diferencias_dias($this->Utilitario->guar_fecha($vfi)) < 0) {
                $estatus = 2;
            } else {
                $estatus = 1;
            }
            if (isset($data['id'])) {
                $datos['Periodo']['id'] = $this->Interfaz->id($data['id']);
                $msj = "Periodo Modificado Exitosamente";
                $tipo = "Exito";
            } else {
                $msj = "Periodo Registrado Exitosamente";
                $tipo = "Exito";
            }
            $datos['Periodo']['nombre'] = $data['nombre'];
            $datos['Periodo']['desde'] = $this->Utilitario->guar_fecha($vfi);
            $datos['Periodo']['hasta'] = $this->Utilitario->guar_fecha($vff);
            $datos['Periodo']['estatus'] = $estatus;

            if ($this->Periodo->save($datos)) {
                $this->Vista->mensaje($msj, $tipo);
                $this->Vista->cerrar_ventana($id_ven);
            } else {
                $this->Vista->mensaje("Ha Ocurrido un Error Intente Nuevamente", "Error");
            }
            $this->log();
        }

        $this->listado();
        $this->render('listado');
    }

    public function excel_movimientos($tipo = 1, $busq = null) {



        $this->set('tipo', $tipo);
        $sql = $this->Query->movimiento_de_materiales();
        $array = array('integrador');
        $array = $this->Integrador->query($sql);
        $data = array();
        $tiendas = $this->Tienda->find('all', array("conditions" => array("Tienda.estatus" => 1, "Tienda.central" => 0)));
        $tienda = $this->Tienda->find('list', array('fields' => array('Tienda.codigo', 'Tienda.nombre'), 'order' => 'Tienda.id Asc'));

        for ($i = 0; $i < count($array); $i++) {
            $array[$i][0]['nombre'] = $tienda[$array[$i][0]['cenrec']];
            $data[] = $array[$i][0];

            //	for($z=0; $z<count($array[$i]); $z++)
            //	{		
            //$array[$i][$z]['nombre']=$tienda[$array[$i][$z]['cenrec']];
            //$data[]=$array[$i][$z];
            //	}
        }
        $this->set('data', $data);
        $this->render('reporte_excel_movimiento_de_materiales');
    }

    function facturas_no_procesadas() {
        $this->permisos_menu_individual('FACTURAS NO PROCESADAS'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
    }

    public function filtrado_facturas_no_procesadas($div = 'vista', $divlistado = 'vista') {
        $this->Vista->title('Listado con Filtro de Facturas No Procesadas');
        echo "<script type='text/javascript'>document.getElementById('buscadorindex').value='BLOQUEADO';
		document.getElementById('buscadorindex').disabled = true;</script>";

        $this->set('div', $div);
        $this->set('divlistado', $divlistado);
        //	$tiendas=$this->Tienda->find('all',array('Tienda.estatus'=>'1','Tienda.central'=>'0','order'=>'Tienda.codigo Asc'));

        $tiendas = $this->Tienda->find('all', array("conditions" => array("Tienda.estatus " => 1, "Tienda.central" => 0), 'order' => 'codigo Asc'));
        //   $tienda=$this->Tienda->find('list', array('fields'=> array('Tienda.nombre', 'Tienda.codigo'), 'order'=>'Tienda.id Asc'));


        $tienda = array();
        $tienda['TODOS'] = 'Todas las Tiendas';
        foreach ($tiendas as $key => $value) {
            $tienda[$value['Tienda']['codigo']] = $value['Tienda']['codigo'] . ' - ' . $value['Tienda']['nombre'];
        }
        $this->set('tienda', $tienda);
    }

    public function listado_filtrado_facturas_no_procesadas() {
        extract($this->request->data);
        $id_ven = $this->request->data['vent'];

        $this->Vista->title('Listado con Filtro de Facturas No Procesadas');
        echo "<script type='text/javascript'>document.getElementById('buscadorindex').value='BLOQUEADO';
		document.getElementById('buscadorindex').disabled = true;</script>";


        $documentos = $this->request->data['documentos'];


        $documentos = nl2br(ucfirst($documentos)); //Transforma todos los saltos de linea en tag &lt;br/&gt;<br>


        $documentos = explode('<br />', $documentos);

//echo count($documentos);





        $sql = '';
        for ($t = 0; $t < count($documentos); $t++) {
            $docum = explode('-', $documentos[$t]);
            if (!isset($docum[1]))
                $docum[1] = '';

            $docu = trim($docum[0]);
            $tien = trim($docum[1]);
            $fact = substr($docum[0], 3, 7);

            if (!empty($tien)) {
                if ((count($documentos) - 1) == $t)
                    $sql.=$this->Query->facturas_no_procesadas($fact, $tien);
                else
                    $sql.=$this->Query->facturas_no_procesadas($fact, $tien) . ' union ';
            }
        }
//		echo $sql;



        $td = $this->Tienda->find('list', array('fields' => array('Tienda.codigo', 'Tienda.nombre'), 'order' => 'Tienda.id Asc'));
        if (in_array('TODOS', $this->request->data['tienda'])) {

            $tienda = $this->Tienda->find('all', array("conditions" => array("Tienda.estatus " => 1, "Tienda.central" => 0), 'order' => 'codigo desc'));


            $array = array();

            for ($z = 0; $z < count($tienda); $z++) {
                $array[] = $tienda[$z]['Tienda']['codigo'];
            }
        } else {

            $array = $this->request->data['tienda'];
        }
        if (!empty($sql))
            $data = $this->Query->app('Sigesp', $array, $sql);
        else
            $data = null;

        //	if(count($data)>0)$this->Vista->cerrar_ventana($id_ven);
        $this->set('tienda', $td);
        $this->set('data', $data);
        $this->set('busq', '');
        //$this->log();
    }

    public function apertura_cierre_mes() {
        $this->permisos_menu_individual('APERTURA y CIERRE DE MES'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
        $this->Vista->title('Listado de Apertura y Cierre de Mes');
        echo "<script type='text/javascript'>document.getElementById('buscadorindex').value='BLOQUEADO';
		document.getElementById('buscadorindex').disabled = true;</script>";
    }

    public function filtrado_apertura_cierre_mes() {
        $this->Vista->title('Listado con Filtro de Apertura y Cierre de Mes');
        echo "<script type='text/javascript'>document.getElementById('buscadorindex').value='BLOQUEADO';
		document.getElementById('buscadorindex').disabled = true;</script>";
        $this->set('div', DVENTANA);
        $this->set('divlistado', DLOAD);
        $tiendas = $this->Tienda->find('all', array("conditions" => array("Tienda.estatus " => 1, "Tienda.central" => 0), 'order' => 'codigo Asc'));
        $tienda = array();
        $tienda['TODOS'] = 'Todas las Tiendas';
        foreach ($tiendas as $key => $value) {
            $tienda[$value['Tienda']['codigo']] = $value['Tienda']['codigo'] . ' - ' . $value['Tienda']['nombre'];
        }
        $this->set('tienda', $tienda);
    }

    public function listado_filtrado_apertura_cierre_mes() {
        $this->permisos_menu_individual('APERTURA y CIERRE DE MES'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
        extract($this->request->data);
        $id_ven = $this->request->data['vent'];
        $this->Vista->title('Listado de Apertura y Cierre de Mes');
        echo "<script type='text/javascript'>document.getElementById('buscadorindex').value='BLOQUEADO';
		document.getElementById('buscadorindex').disabled = true;</script>";
        $sql = $this->Query->apertura_cierre_mes();
        $td = $this->Tienda->find('list', array('fields' => array('Tienda.codigo', 'Tienda.nombre'), 'order' => 'Tienda.id Asc'));
        if (in_array('TODOS', $this->request->data['tienda'])) {
            $tienda = $this->Tienda->find('all', array("conditions" => array("Tienda.estatus " => 1, "Tienda.central" => 0), 'order' => 'codigo desc'));
            $array = array();
            for ($z = 0; $z < count($tienda); $z++) {
                $array[] = $tienda[$z]['Tienda']['codigo'];
            }
        } else {
            $array = $this->request->data['tienda'];
        }

        $data = $this->Query->app('Sigesp', $array, $sql);
        if (count($data) > 0)
            $this->Vista->cerrar_ventana($id_ven);
        $this->set('tienda', $td);
        $this->set('data', $data);
        $this->set('busq', '');
    }

    public function cambiar_status_apertura_mes($codtiend = null, $mes = null, $cond = null) {

        $codtiend = $this->Interfaz->id($codtiend);
        $mesac = date('m');
        $mesacx = ($mesac * 1);

        if ($mes > $mesac and $mesacx != 1) {
            $this->Vista->mensaje('No se Pueden Habilitar meses superiores al actual', 'ERROR');
            if ($cond == 'si')
                $datax[0]['mes'] = 0;
            
                else$datax[0]['mes'] = 1;
        }
        else if ($mes > $mesac and $mes != 12) {
            $this->Vista->mensaje('No se Pueden Habilitar meses superiores al actual', 'ERROR');
            if ($cond == 'si')
                $datax[0]['mes'] = 0;
            
                else$datax[0]['mes'] = 1;
        }
        else {
            $array = array($codtiend);
            $sqlb = $this->Query->apertura_cierre_mes($mes);
            $datax = $this->Query->app('Sigesp', $array, $sqlb);


            if ($datax[0]['mes'] === 1)
                $vdf = 0;
            
                else$vdf = 1;

            $sql = $this->Query->update_apertura_cierre_mes($mes, $vdf);
            $data = $this->Query->app('Sigesp', $array, $sql);
            if (count($data) > 0)
                $this->Vista->cerrar_ventana($id_ven);
        }
        $this->set('codtiend', $codtiend);
        $this->set('mes', $mes);
        $this->set('cond', $datax[0]['mes']);
    }

    public function reporte_de_ventas() {

        $this->permisos_menu_individual('FACTURAS NO PROCESADAS'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
        $this->Vista->title('Reporte de Ventas');
        echo "<script type='text/javascript'>document.getElementById('buscadorindex').value='BLOQUEADO';
		document.getElementById('buscadorindex').disabled = true;</script>";
        $data = array();
        $tiendas = array();
        $this->set('data', $data);
        $this->set('tiendas', $tiendas);
        $this->set('busq', '');
    }

    public function filtrado_reporte_de_ventas() {

        $this->Vista->title('Listado con Filtro de Facturas No Procesadas');
        echo "<script type='text/javascript'>document.getElementById('buscadorindex').value='BLOQUEADO';
		document.getElementById('buscadorindex').disabled = true;</script>";

        $this->set('div', DVENTANA);
        $this->set('divlistado', DLOAD);

        $tiendas = $this->Tienda->find('all', array("conditions" => array("Tienda.estatus " => 1, "Tienda.central" => 0), 'order' => 'codigo Asc'));

        $tienda = array();
        $tienda['TODOS'] = 'Todas las Tiendas';
        foreach ($tiendas as $key => $value) {
            $tienda[$value['Tienda']['codigo']] = $value['Tienda']['codigo'] . ' - ' . $value['Tienda']['nombre'];
        }
        $this->set('tienda', $tienda);
    }

    public function listado_filtrado_reporte_de_ventas() {
        $this->permisos_menu_individual('FACTURAS NO PROCESADAS'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
        extract($this->request->data);
        $id_ven = $this->request->data['vent'];
        $fi = $this->request->data['fecha_i'];
        $vfi = $$fi;
        $ff = $this->request->data['fecha_f'];
        $vff = $$ff;
        $this->Vista->title('Listado con Filtro de Reporte de Ventas');
        echo "<script type='text/javascript'>document.getElementById('buscadorindex').value='BLOQUEADO';
		document.getElementById('buscadorindex').disabled = true;</script>";

        if (empty($vfi) and empty($vff)) {
            $vfi = date('Y-m-d');
            $vff = date('Y-m-d');
        } else if (!empty($vfi) and empty($vff)) {
            $vfi = $this->Utilitario->guar_fecha($vfi);
            $vff = $vfi;
        } else if (empty($vfi) and !empty($vff)) {
            $vff = $this->Utilitario->guar_fecha($vff);
            $vfi = $vff;
        } else {
            if ($this->diferencias_dias($this->Utilitario->guar_fecha($vfi), $this->Utilitario->guar_fecha($vff)) < 0) {
                $a_ = $vfi;
                $vfi = $this->Utilitario->guar_fecha($vff);
                $vff = $this->Utilitario->guar_fecha($a_);
            } else {
                $vfi = $this->Utilitario->guar_fecha($vfi);
                $vff = $this->Utilitario->guar_fecha($vff);
            }
        }

        $fpago = $this->request->data['fpago'];
        $material = $this->request->data['material'];
        $nfactura = $this->request->data['nfactura'];
        $mfactura = $this->request->data['mfactura'];

        //	$sql=$this->Query->reporte_de_ventas($vfi,$vff);
        $sql = $this->Query->reporte_de_ventas($vfi, $vff, $fpago, $material, $nfactura, $mfactura, $blanco, $numinst);
        $td = $this->Tienda->find('list', array('fields' => array('Tienda.codigo', 'Tienda.nombre'), 'order' => 'Tienda.id Asc'));
        if (in_array('TODOS', $this->request->data['tienda'])) {
            $tienda = $this->Tienda->find('all', array("conditions" => array("Tienda.estatus " => 1, "Tienda.central" => 0), 'order' => 'codigo desc'));
            $array = array();
            for ($z = 0; $z < count($tienda); $z++) {
                $array[] = $tienda[$z]['Tienda']['codigo'];
            }
        } else {

            $array = $this->request->data['tienda'];
        }

        $data = $this->Query->app('Sigesp', $array, $sql);
        if (count($data) > 0)
            $this->Vista->cerrar_ventana($id_ven);
        $this->set('tienda', $td);
        $this->set('data', $data);
        $this->set('busq', '');
        //	$this->log();
    }

    function buscar_cheques() {
        $this->permisos_menu_individual('BUSCAR CHEQUES'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
        $this->Vista->title('Listado de Cheques');
        $this->bloquear_buscador();
    }

    function filtrado_cheques($div = 'vista', $divlistado = 'vista') {
        $this->Vista->title('Listado con Filtro de Movimientos Duplicados');
        $this->set('div', $div);
        $this->set('divlistado', $divlistado);
        $tiendas = $this->Tienda->find('all', array("conditions" => array("Tienda.estatus " => 1, "Tienda.central" => 0), 'order' => 'codigo Asc'));
        $tienda = array();
        $tienda['TODOS'] = 'Todas las Tiendas';
        foreach ($tiendas as $key => $value) {
            $tienda[$value['Tienda']['codigo']] = $value['Tienda']['codigo'] . ' - ' . $value['Tienda']['nombre'];
        }
        $this->set('tienda', $tienda);
    }

    function listado_filtrado_cheques() {
        $this->permisos_menu_individual('BUSCAR CHEQUES'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
        extract($this->request->data);
        $id_ven = $this->request->data['vent'];
        $fi = $this->request->data['fecha_i'];
        $vfi = $$fi;
        $ff = $this->request->data['fecha_f'];
        $vff = $$ff;
        $monto = $dmonto;
        $fpago = $vfpago;
        $this->Vista->title('Listado de Cheques Encontrados');
        $documentos = $this->request->data['documentos'];
        $documentos = nl2br(ucfirst($documentos)); //Transforma todos los saltos de linea en tag &lt;br/&gt;<br>
        $documentos = explode('<br />', $documentos);
        if (count($documentos) > 0)
            $cheques = '';
        else
            $cheques = null;
        if (count($documentos) > 2) {
            for ($t = 0; $t < count($documentos); $t++) {
                $docum = $documentos[$t];
                if ((count($documentos) - 1) == $t)
                    $cheques.="a.numinst like '%$docum%'"; //$cheques.="nro_documento like '%$docum%'";
                else
                    $cheques.="a.numinst like '%$docum%' or "; //$cheques.="nro_documento like '%$docum%' or ";
            }
        }
        else {
            if ($documentos[0] != '') {
                for ($t = 0; $t < count($documentos); $t++) {
                    $docum = $documentos[$t];
                    if ((count($documentos) - 1) == $t)
                        $cheques.="a.numinst like '%$docum%'"; //$cheques.="nro_documento like '%$docum%'";
                    else
                        $cheques.="a.numinst like '%$docum%' or "; //$cheques.="nro_documento like '%$docum%' or ";
                }
            }
            else
                $cheques = null;
        }


        $td = $this->Tienda->find('list', array('fields' => array('Tienda.codigo', 'Tienda.nombre'), 'order' => 'Tienda.id Asc'));
        if (in_array('TODOS', $this->request->data['tienda'])) {
            $tienda = $this->Tienda->find('all', array("conditions" => array("Tienda.estatus " => 1, "Tienda.central" => 0), 'order' => 'codigo desc'));
            $array = array();
            for ($z = 0; $z < count($tienda); $z++) {
                $array[] = $tienda[$z]['Tienda']['codigo'];
            }
        } else {
            $array = $this->request->data['tienda'];
        }

        if (empty($vfi) and empty($vff)) {
            $vfi = null;
            $vff = null;
        } else if (!empty($vfi) and empty($vff)) {
            $vfi = $this->Utilitario->guar_fecha($vfi);
            $vff = $vfi;
        } else if (empty($vfi) and !empty($vff)) {
            $vff = $this->Utilitario->guar_fecha($vff);
            $vfi = $vff;
        } else {
            if ($this->diferencias_dias($this->Utilitario->guar_fecha($vfi), $this->Utilitario->guar_fecha($vff)) < 0) {
                $a_ = $vfi;
                $vfi = $this->Utilitario->guar_fecha($vff);
                $vff = $this->Utilitario->guar_fecha($a_);
            } else {
                $vfi = $this->Utilitario->guar_fecha($vfi);
                $vff = $this->Utilitario->guar_fecha($vff);
            }
        }
        if (!isset($monto))
            $monto = null;
        else
            $monto = str_replace(',', '.', $monto = str_replace('.', '', $monto));
        if (!isset($fpago))
            $fpago = null;
        echo $monto;
        $sql = $this->Query->busqueda_cheques($vfi, $vff, $monto, $fpago, $cheques);
        $data = $this->Query->app('Sigesp', $array, $sql);
        //$data=null;

        if (count($data) > 0)
            $this->Vista->cerrar_ventana($id_ven);
        if (count($data) > MAX_PAGI)
            $mos = MAX_PAGI;
        else
            $mos = count($data);
        $this->Vista->title('Listado de Cheques Encontrados (Mostrando ' . $mos . ' de ' . count($data) . ' Registros Encontrados)');

        $this->set('tienda', $td);
        $this->set('data', $data);
        $this->set('busq', '');
    }

    function movimientos_duplicados() {
        $this->permisos_menu_individual('MOVIMIENTOS DUPLICADOS'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
        $this->Vista->title('Listado de Cheques');
        $this->bloquear_buscador();
    }

    public function filtrado_movimientos_duplicados($div = 'vista', $divlistado = 'vista') {
        $this->Vista->title('Listado con Filtro de Movimientos Duplicados');
        $this->set('div', $div);
        $this->set('divlistado', $divlistado);
        $tiendas = $this->Tienda->find('all', array("conditions" => array("Tienda.estatus " => 1, "Tienda.central" => 0), 'order' => 'codigo Asc'));
        $tienda = array();
        $tienda['TODOS'] = 'Todas las Tiendas';
        foreach ($tiendas as $key => $value) {
            $tienda[$value['Tienda']['codigo']] = $value['Tienda']['codigo'] . ' - ' . $value['Tienda']['nombre'];
        }
        $this->set('tienda', $tienda);
    }

    public function listado_filtrado_movimientos_duplicados() {
        $this->permisos_menu_individual('MOVIMIENTOS DUPLICADOS'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
        $compactada = $this->serializador($this->request->data, 2); //2 serializa el arreglo

        $this->set('opciones', $compactada);

        extract($this->request->data);
        $id_ven = $this->request->data['vent'];
        $fi = $this->request->data['fecha_i'];
        $vfi = $$fi;
        $ff = $this->request->data['fecha_f'];
        $vff = $$ff;
        $this->Vista->title('Listado con Movimientos Duplicados');

        if (empty($vfi) and empty($vff)) {
            $vfi = date('Y-m-d');
            $vff = date('Y-m-d');
        } else if (!empty($vfi) and empty($vff)) {
            $vfi = $this->Utilitario->guar_fecha($vfi);
            $vff = $vfi;
        } else if (empty($vfi) and !empty($vff)) {
            $vff = $this->Utilitario->guar_fecha($vff);
            $vfi = $vff;
        } else {
            if ($this->diferencias_dias($this->Utilitario->guar_fecha($vfi), $this->Utilitario->guar_fecha($vff)) < 0) {
                $a_ = $vfi;
                $vfi = $this->Utilitario->guar_fecha($vff);
                $vff = $this->Utilitario->guar_fecha($a_);
            } else {
                $vfi = $this->Utilitario->guar_fecha($vfi);
                $vff = $this->Utilitario->guar_fecha($vff);
            }
        }
        $sql = $this->Query->movimientos_duplicados($vfi, $vff);

        if (in_array('TODOS', $this->request->data['tienda'])) {
            $tienda = $this->Tienda->find('all', array("conditions" => array("Tienda.estatus " => 1, "Tienda.central" => 0), 'order' => 'codigo desc'));
            $array = array();
            for ($z = 0; $z < count($tienda); $z++) {
                $array[] = $tienda[$z]['Tienda']['codigo'];
            }
        } else {
            $array = $this->request->data['tienda'];
        }
        $tiendas = $this->Tienda->find('list', array('fields' => array('Tienda.codigo', 'Tienda.nombre'), 'order' => 'Tienda.id Asc'));
        $this->set('tienda', $tiendas);

        $data = $this->Query->app('Sigesp', $array, $sql);
        if (count($data) > 0)
            $this->Vista->cerrar_ventana($id_ven);

        $this->set('data', $data);
        $this->set('busq', '');
        $this->log();
    }

    public function reporte_excel_filtrado_movimientos_duplicados($tipo, $opciones) {
        $this->set('tipo', $tipo);
        $this->request->data = $this->serializador($opciones, 1); //1 convierte la cadena serializada en un arreglo
        if (is_array($this->request->data)) {
            extract($this->request->data);
            $id_ven = $this->request->data['vent'];
            $fi = $this->request->data['fecha_i'];
            $vfi = $$fi;
            $ff = $this->request->data['fecha_f'];
            $vff = $$ff;
            if (empty($vfi) and empty($vff)) {
                $vfi = date('Y-m-d');
                $vff = date('Y-m-d');
            } else if (!empty($vfi) and empty($vff)) {
                $vfi = $this->Utilitario->guar_fecha($vfi);
                $vff = $vfi;
            } else if (empty($vfi) and !empty($vff)) {
                $vff = $this->Utilitario->guar_fecha($vff);
                $vfi = $vff;
            } else {
                if ($this->diferencias_dias($this->Utilitario->guar_fecha($vfi), $this->Utilitario->guar_fecha($vff)) < 0) {
                    $a_ = $vfi;
                    $vfi = $this->Utilitario->guar_fecha($vff);
                    $vff = $this->Utilitario->guar_fecha($a_);
                } else {
                    $vfi = $this->Utilitario->guar_fecha($vfi);
                    $vff = $this->Utilitario->guar_fecha($vff);
                }
            }
            $sql = $this->Query->movimientos_duplicados($vfi, $vff);
            if (in_array('TODOS', $this->request->data['tienda'])) {
                $tienda = $this->Tienda->find('all', array("conditions" => array("Tienda.estatus " => 1, "Tienda.central" => 0), 'order' => 'codigo desc'));
                $array = array();
                for ($z = 0; $z < count($tienda); $z++) {
                    $array[] = $tienda[$z]['Tienda']['codigo'];
                }
            } else {
                $array = $this->request->data['tienda'];
            }
            $tiendas = $this->Tienda->find('list', array('fields' => array('Tienda.codigo', 'Tienda.nombre'), 'order' => 'Tienda.id Asc'));
            $this->set('tienda', $tiendas);
            $data = $this->Query->app('Sigesp', $array, $sql);
            $this->set('data', $data);
        } else {
            echo "ESTAS INTENTANDO VIOLAR LA SEGURIDAD AGROPATRIA";
        }
    }

    function buscar_inventario() {
        $this->permisos_menu_individual('BUSQUEDA DE INVENTARIO'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
        $this->Vista->title('Listado de Inventarios');
        $this->bloquear_buscador();
    }

    function filtrado_inventario($div = 'vista', $divlistado = 'vista') {
        //$this->Vista->title('Listado con Filtro de Inventarios');
        $this->Session->delete('opciones_inventario');
        $this->set('div', $div);
        $this->set('divlistado', $divlistado);
        $tiendas = $this->Tienda->find('all', array("conditions" => array("Tienda.estatus " => 1, "Tienda.central" => 0), 'order' => 'codigo Asc'));
        $tienda = array();
        //$tienda['TODOS']='Todas las Tiendas';
        foreach ($tiendas as $key => $value) {
            $tienda[$value['Tienda']['codigo']] = $value['Tienda']['codigo'] . ' - ' . $value['Tienda']['nombre'];
        }
        $this->set('tienda', $tienda);
    }

    function listado_filtrado_inventario() {
        $this->Session->write('opciones_inventario', $this->serializador($this->request->data, 2));
        $compactada = $this->serializador($this->request->data, 2); //2 serializa el arreglo
        $this->set('opciones', $compactada);
        $this->Vista->mensaje('Reporte Disponible', 'Exito');
        /* extract($this->request->data);
          $td=$this->Tienda->find('list', array('fields'=> array('Tienda.codigo', 'Tienda.nombre'), 'order'=>'Tienda.id Asc'));
          if(in_array('TODOS',$this->request->data['tienda']))
          {
          $tienda=$this->Tienda->find('all',array("conditions"=>array("Tienda.estatus "=>1,"Tienda.central"=>0),'order'=>'codigo desc'));
          $array=array();
          for($z=0; $z<count($tienda); $z++)
          {
          $array[]=$tienda[$z]['Tienda']['codigo'];
          }
          }
          else
          {
          $array=$this->request->data['tienda'];
          }
          if(count($array)>20)
          {
          $final=array();
          for($z=0; $z<20; $z++)
          {
          $final[]=$array[$z];
          }
          }
          else $final=$array;
          $sql=$this->Query->busca_inventario();
          $data=$this->Query->app('Sigesp',$final,$sql);
          //$data=$this->Query->app_tienda('Sigesp',$array,$sql);

          if(count($data)>0) $this->Vista->cerrar_ventana($vent);
          if(count($data)>MAX_PAGI) $mos=MAX_PAGI;
          else $mos=count($data);
          $this->Vista->title('Listado de Materiales Encontrados (Mostrando de '.$mos.' de '.count($data).' Registros Encontrados)');
          //print_r($data);
          $this->set('tienda',$td);
          $this->set('data',$data);
          $this->set('busq','');
         */
    }

    public function reporte_excel_listado_filtrado_inventario($tipo, $opciones = null) {
        $this->set('tipo', $tipo);
        //$this->request->data=$this->serializador($opciones,1); //1 convierte la cadena serializada en un arreglo
        $this->request->data = $this->serializador($this->Session->read('opciones_inventario'), 1); //1 convierte la cadena serializada en un arreglo
        if (is_array($this->request->data)) {
            extract($this->request->data);
            $td = $this->Tienda->find('list', array('fields' => array('Tienda.codigo', 'Tienda.nombre'), 'order' => 'Tienda.id Asc'));
            if (in_array('TODOS', $this->request->data['tienda'])) {
                $tienda = $this->Tienda->find('all', array("conditions" => array("Tienda.estatus " => 1, "Tienda.central" => 0), 'order' => 'codigo Asc'));
                $array = array();
                for ($z = 0; $z < count($tienda); $z++) {
                    $array[] = $tienda[$z]['Tienda']['codigo'];
                }
            } else {
                $array = $this->request->data['tienda'];
            }
            /* if(count($array)>20)
              {
              $final=array();
              for($z=0; $z<20; $z++)
              {
              $final[]=$array[$z];
              }
              $array=null;
              $array=$final;
              } */
            //else $final=$array;
            $sql = $this->Query->busca_inventario();
            $data = $this->Query->app_tienda('Sigesp', $array, $sql);

            $region = $this->Reporte->regiones('desreg');
            $estado = $this->Reporte->regiones('desest');
            $nombrex = $this->Reporte->regiones('dentie');


            $this->set('nombrex', $nombrex);
            $this->set('estado', $estado);
            $this->set('region', $region);
            $this->set('tienda', $td);
            $this->set('data', $data);
            $this->set('tbuscar', $array);
        } else {
            echo "ESTAS INTENTANDO VIOLAR LA SEGURIDAD AGROPATRIA";
        }
    }

    function correlativo_factura() {
        $this->permisos_menu_individual('CORRELATIVOS DE FACTURAS'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
        $this->Vista->title('Listado de Facturas');
        $this->bloquear_buscador();
    }

    function filtrado_correlativo_factura($div = 'vista', $divlistado = 'vista') {
        $this->Vista->title('Listado con Filtro de Facturas a Modificar');
        $this->set('div', $div);
        $this->set('divlistado', $divlistado);
        $tiendas = $this->Tienda->find('all', array("conditions" => array("Tienda.estatus " => 1, "Tienda.central" => 0), 'order' => 'codigo Asc'));
        $tienda = array();
        //$tienda['TODOS']='Todas las Tiendas';
        foreach ($tiendas as $key => $value) {
            $tienda[$value['Tienda']['codigo']] = $value['Tienda']['codigo'] . ' - ' . $value['Tienda']['nombre'];
        }
        $this->set('tienda', $tienda);
    }

    function listado_filtrado_correlativo_factura() {
        extract($this->request->data);

        $this->Vista->title('Listado de Facturas a Modificar');

        if (empty($facturas) or empty($ncontrol)) {
            $this->Vista->mensaje('Indique al menos una Factura y numero de control', 'ERROR');
            $this->set('tienda', null);
            $this->set('data', null);
            $this->set('busq', '');
        } else {
            $ncontrolcatfn = explode("\n", $ncontrol);
            $facturascatfn = explode("\n", $facturas);
            $facturascatfn = count($facturascatfn);
            $ncontrolcatfn = count($ncontrolcatfn);

            $confts = true;
            for ($i = 0; $i < count($facturascatfn); $i++) {

                if (is_numeric($facturascatfn[$i]))
                    $confts = false;
//if($facturascatfn[$i]==''){unset($facturascatfn[$i]);}
            }
            /*
              for($i=0; $i<count($ncontrolcatfn); $i++){

              //if($ncontrolcatfn[$i]==''){unset($ncontrolcatfn[$i]);}

              }
             */









            if ($confts == true) {

                if ($facturascatfn != $ncontrolcatfn) {
                    $this->set('tienda', null);
                    $this->set('data', null);
                    $this->set('busq', '');
                    $this->Vista->mensaje("<font color=\"red\"><b>$facturascatfn Lineas</b></font> Cant. 	Numero Factura 	!= <font color=\"red\"><b>$ncontrolcatfn Lineas</b></font> Catn.	Numero Control", 'ERROR');
                } else {


                    $facturas = nl2br(ucfirst($facturas)); //Transforma todos los saltos de linea en tag &lt;br/&gt;<br>
                    $facturas = explode('<br />', $facturas);

                    $canfact = count($facturas);


                    if (count($facturas) > 0)
                        $facturas_ = '';
                    else
                        $facturas_ = null;

                    $ncontrol = nl2br(ucfirst($ncontrol)); //Transforma todos los saltos de linea en tag &lt;br/&gt;<br>
                    $ncontrol = explode('<br />', $ncontrol);

                    $canncon = count($ncontrol);
                    for ($t = 0; $t < count($facturas); $t++) {
                        $nf = null;

                        if (isset($facturas[$t]) && trim($facturas[$t]) != "") {
                            $nf = explode('-', trim($facturas[$t]));
                            if (!isset($nf[1]))
                                $nf[1] = '';

                            $nfl = 'FAC-' . $nf[0] . $this->Interfaz->item($nf[1], 18);
                            $nuevos[$nfl] = $nf[0] . '-' . $this->Interfaz->item(trim($ncontrol[$t]), 18);
                            $nfl = 'DEV-' . $nf[0] . $this->Interfaz->item($nf[1], 18);
                            $nuevos[$nfl] = $nf[0] . '-' . $this->Interfaz->item(trim($ncontrol[$t]), 18);
                            $nfl = 'ANL-' . $nf[0] . $this->Interfaz->item($nf[1], 18);
                            $nuevos[$nfl] = $nf[0] . '-' . $this->Interfaz->item(trim($ncontrol[$t]), 18);
                        }
                    }

                    if (count($ncontrol) > 0)
                        $ncontrol_ = '';
                    else
                        $ncontrol_ = null;
//echo $canfact."===".$canncon;
                    if ($canfact === $canncon) {

                        $sqla = 'select codtiend,numfac,monto,numcon,codusu,fecemi from sfc_factura as a where ';

                        if (count($facturas) > 0) {
                            for ($t = 0; $t < count($facturas); $t++) {
                                $factur = trim($facturas[$t]);
                                $factur = str_replace("-", "%", trim($factur));
                                if ($factur != "") {
                                    if ((count($facturas) - 1) == $t)
                                        $sqla.="a.numfac like '%" . trim($factur) . "%'";
                                    else
                                        $sqla.="a.numfac like '%" . trim($factur) . "%' or ";
                                }else {
                                    $sqla.="a.numfac like '%RETURNNEGATIVO%'";
                                }
                            }

                            $sqla = $sqla . " ORDER BY a.fecemi,a.numfac ASC";
                        }

                        $array = $tienda;


                        //$sql=$this->Query->busqueda_cheques($vfi,$vff,$monto,$fpago,$cheques);

                        if ($sqla == 'select codtiend,numfac,monto,numcon,codusu,fecemi from sfc_factura as a where ') {
                            $this->Vista->mensaje('Registros no encontrados Verificar la tienda', 'ERROR');

                            $td = null;
                            $data = null;
                        } else {
                            $data = $this->Query->app('Sigesp', $array, $sqla);
                        }

                        $sqlb = array();

                        for ($t = 0; $t < count($data); $t++) {
                            $ncont = trim($ncontrol[$t]);
                            /* if($ncont!=""){
                              $data[$t]['nuevo']=$ncont;
                              } */
                            $index = trim($data[$t]['numfac']);
                            $data[$t]['nuevo'] = $nuevos[$index];
                        }
                        $this->Vista->title("Resultado: Facturas Buscadas <font color=\"red\">\"$canfact\"</font> - Facturas Encontradas <font color=\"red\">\"" . count($data) . "\"</font>");



                        //$data=null;
                        $id_ven = $vent;
                        //	if(count($data)>0) $this->Vista->cerrar_ventana($id_ven);
                    } else {
                        $this->Vista->mensaje('Error en datos, Posiblemente se tenga un ENTER', 'ERROR');
                    }

                    $td = $this->Tienda->find('list', array('fields' => array('Tienda.codigo', 'Tienda.nombre'), 'order' => 'Tienda.id Asc'));

                    $this->set('tienda', $td);
                    $this->set('data', $data);
                    $this->set('busq', '');
                }
            } else {
                $this->set('tienda', array('', ''));
                $this->set('data', array('', ''));
                $this->set('busq', '');
            }
        }
    }

    public function cambiar_correlativo_factura($codtiend = null, $numfac = null, $numcon = null, $codusu = null, $nuevo = null, $monto = null, $fecemi = null) {

        if (isset($codtiend) and isset($numfac) and isset($numcon) and isset($codusu) and isset($nuevo) and isset($monto) and isset($fecemi)) {

            $codtiend = $this->Interfaz->id($codtiend);
            $numfac = $this->Interfaz->id($numfac);
            $numcon = $this->Interfaz->id($numcon);
            $codusu = $this->Interfaz->id($codusu);
            $nuevo = $this->Interfaz->id($nuevo);
            $monto = $this->Interfaz->id($monto);
            $fecemi = $this->Interfaz->id($fecemi);
            $array = array($codtiend);


            $sqlb = $this->Query->cambiar_correlativo_factura_select(trim($codtiend), trim($numfac), trim($numcon), trim($codusu), trim($nuevo), trim($monto), trim($fecemi));
            $datax = $this->Query->app('Sigesp', $array, $sqlb);
            if (count($datax) === 1) {
                //echo 'exito';
                $nuevo = explode('-', $nuevo);
                $numcon_ = explode('-', $numcon);
                $numcon_ = $numcon_[1];
                $catnumcon = strlen($numcon_);
                $nuevo = $nuevo[0] . '-' . $this->Interfaz->item($nuevo[1], $catnumcon);



                $sqlbx = $this->Query->cambiar_correlativo_factura_update(trim($codtiend), trim($numfac), trim($numcon), trim($codusu), trim($nuevo), trim($monto), trim($fecemi));

                $this->Vista->mensaje("$sqlbx", 'ERROR');
                $dataxc = $this->Query->app('Sigesp', $array, $sqlbx);

//	$datax[0]['numcon'];
                $cond = 0;
            } else {

                $this->Vista->mensaje('No se Puedo Procesar esta consulta', 'ERROR');
                $cond = 1;
            }
//1719464
        } else {

            $this->Vista->mensaje('No se Puedo Procesar error en datos de entrada', 'ERROR');
        }


        /*
          echo '<br />'.$codtiend;
          echo '<br />'.$numfac;
          echo '<br />'.$numcon;
          echo '<br />'.$codusu;
          echo '<br />'.$nuevo;
          echo '<br />'.$monto;
         */
        $this->set('cond', $cond);
    }

    public function reporteadeor($busq = '') {
        $this->permisos_menu_individual('REPORTEADOR'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
        $this->Vista->title('Listado de Reporteador');
        $data = $this->ReporteSql->find('all', array("conditions" => array("ReporteSql.id >" => 0)));
        $this->set('data', $data);
        $this->set('busq', $busq);
    }

    public function filtrado_reporteador() {
        $this->Session->delete('opciones_reporteador');
        $this->Vista->title('Listado con Filtro de Reporteador');
        $tiendas = $this->Tienda->find('all', array("conditions" => array("Tienda.estatus " => 1, "Tienda.central" => 0), 'order' => 'codigo Asc'));
        $tienda = array();
        foreach ($tiendas as $key => $value) {
            $tienda[$value['Tienda']['codigo']] = $value['Tienda']['codigo'] . ' - ' . $value['Tienda']['nombre'];
        }
        $this->set('tienda', $tienda);
    }

    function listado_filtrado_reporteador() {
        extract($this->request->data);
        $id_ven = $vent;
        $this->set('opciones', $this->serializador($this->request->data, 2));
        $this->Session->write('opciones_reporteador', $this->serializador($this->request->data, 2));
        $this->Vista->title('Listado de Resultado a Modificar');
        $data = null;
        $nombres = trim($nombres);
        $sql = trim($sql);
        $titulo = trim($titulo);
        if (empty($sql) or empty($nombres) or empty($titulo)) {
            $this->Vista->mensaje('Indique la sentencia sql, los titulos del reporte y el Nombre del Reporte', 'ERROR');
            $this->set('tienda', null);
            $this->set('data', null);
            $this->set('busq', '');
            $this->set('mostrar', '0');
        } else {
            $titulos = explode(',', $nombres);
            $this->set('titulos', $titulos);
            if (in_array('TODOS', $this->request->data['tienda'])) {
                $tienda = $this->Tienda->find('all', array("conditions" => array("Tienda.estatus " => 1, "Tienda.central" => 0), 'order' => 'codigo desc'));
                $array = array();
                for ($z = 0; $z < count($tienda); $z++) {
                    $array[] = $tienda[$z]['Tienda']['codigo'];
                }
            } else {
                $array = $this->request->data['tienda'];
            }
            if ($tipo == 1) {//$data=$this->Query->app('Sigesp',$array,$sql);
            } else {//$data=$this->Query->app_tienda('Sigesp',$array,$sql);
            }
            $td = $this->Tienda->find('list', array('fields' => array('Tienda.codigo', 'Tienda.nombre'), 'order' => 'Tienda.id Asc'));
            $this->set('tienda', $td);
            $this->set('tienda_buscar', $array);
            $this->set('data', null);
            $this->set('tipo', $tipo);
            $this->set('busq', '');
            $this->set('mostrar', '1');
            $this->Vista->mensaje('Reporte Disponible', 'INFORMACION');
            /* if(count($data)>0){
              $this->Vista->cerrar_ventana($id_ven);
              }
              else{
              $this->Vista->mensaje('NO SE ENCONTRARON DATOS PARA LA CONSULTA','INFORMACION');
              } */
        }
    }

    function reporte_excel_reporteador($t_exel) {
        $this->set('t_exel', $t_exel);
        $this->request->data = $this->serializador($this->Session->read('opciones_reporteador'), 1); //1 convierte la cadena serializada en un arreglo
        if (is_array($this->request->data)) {
            extract($this->request->data);
            $titulos = explode(',', $nombres);
            $agrupar = explode(',', $agrupar);
            $this->set('titulos', $titulos);
            $this->set('agrupar', $agrupar);
            if (in_array('TODOS', $this->request->data['tienda'])) {
                $tienda = $this->Tienda->find('all', array("conditions" => array("Tienda.estatus " => 1, "Tienda.central" => 0), 'order' => 'codigo desc'));
                $array = array();
                for ($z = 0; $z < count($tienda); $z++) {
                    $array[] = $tienda[$z]['Tienda']['codigo'];
                }
            } else {
                $array = $this->request->data['tienda'];
            }
            if ($tipo == 1) {
                $data = $this->Query->app('Sigesp', $array, $sql);
            } else {
                $data = $this->Query->app_tienda('Sigesp', $array, $sql);
            }
            $td = $this->Tienda->find('list', array('fields' => array('Tienda.codigo', 'Tienda.nombre'), 'order' => 'Tienda.id Asc'));
            $this->set('tienda', $td);
            $this->set('tienda_buscar', $array);
            $this->set('data', $data);
            $this->set('tipo', $tipo);
            $this->set('titulo', $titulo);
        } else {
            $this->Vista->mensaje('ESTAS INTENTANDO VIOLAR LA SEGURIDAD AGROPATRIA', 'INFORMACION');
        }
    }

//agencia,cod_articulo,nom_articulo,clasificacion,sub_clasificacion,existencia,costo,costo_existencia
    public function guardar_sql() {
        $this->request->data = $this->serializador($this->Session->read('opciones_reporteador'), 1);
        if (is_array($this->request->data)) {
            extract($this->request->data);
            $sql = str_replace("'", "/c/", $sql);
            $sql = str_replace('"', "/dc/", $sql);
            $sql = str_replace(';', "/pc/", $sql);
            $sql = str_replace('--', "/dg/", $sql);
            $tienda = implode(',', $tienda);
            if (isset($id_sql)) {
                $id = $this->Interfaz->id($id_sql);
                $datos['ReporteSql']['id'] = $id;
            }
            $datos['ReporteSql']['sql'] = $sql;
            $datos['ReporteSql']['nombre'] = $titulo;
            $datos['ReporteSql']['titulos'] = $nombres;
            $datos['ReporteSql']['tiendas'] = $tienda;
            $datos['ReporteSql']['tipo'] = $tipo;
            $datos['ReporteSql']['agrupar'] = $agrupar;
            if ($this->ReporteSql->save($datos)) {
                $this->Vista->mensaje('SENTENCIA SQL GUARDADA XITOSAMENTE', 'EXITO');
            } else {
                $this->Vista->mensaje('ERROR GUARDANDO SENTENCIA SQL', 'ERROR');
            }
        } else {
            $this->Vista->mensaje('ESTAS INTENTANDO VIOLAR LA SEGURIDAD AGROPATRIA', 'INFORMACION');
        }
        $this->reporteadeor();
        $this->render('reporteadeor');
    }

    public function ver_reporte_sql($tipo, $id = null) {
        $this->Session->delete('opciones_reporteador');
        $this->Vista->title('Listado con Filtro de Reporteador');
        $tiendas = $this->Tienda->find('all', array("conditions" => array("Tienda.estatus " => 1, "Tienda.central" => 0), 'order' => 'codigo Asc'));
        $tienda = array();

        foreach ($tiendas as $key => $value) {
            $tienda[$value['Tienda']['codigo']] = $value['Tienda']['codigo'] . ' - ' . $value['Tienda']['nombre'];
        }
        $this->set('tienda', $tienda);

        $id = $this->Interfaz->id($id);
        $data = $this->ReporteSql->find('first', array('conditions' => array('ReporteSql.id' => $id)));
        $this->set('data', $data);
        $this->set('tipo', $tipo);
    }

///////////////REPLICA DE PRECIOS//////////////////////////////////

    function listado_replicas_de_precios() {
        $this->permisos_menu_individual('replica de precios'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
        $this->Vista->title('Listado de Replica de Precios Pendientes');
        $this->bloquear_buscador(2);
        $data = $this->ArchivoPrecios->find('all', array('conditions' => array('ArchivoPrecios.id > ' => 0)));
        $this->set('data', $data);
        $this->set('busq', '');
        //$this->log();
    }

    public function upload_replica_de_precios($div = 'vista', $divlistado = 'vista') {
        $this->set('div', $div);
        $this->set('divlistado', $divlistado);
        $this->Vista->title('Subir Archivo Replica de Precios');
    }

    public function subir_replica_de_precios() {
        $this->Vista->title('Subir Archivos Replica de Precios');
        $this->bloquear_buscador();
    }

    public function nuevo_replica($div = 'vista', $divlistado = 'vista') {
        $this->Vista->title('Filtro de Replica de Precios');
        $this->permisos_accion_individual('replica de precios','nuevo'); // mensaje que se quiere mostrar
        $this->set('div', $div);
        $this->set('divlistado', $divlistado);
        $tiendas = $this->Tienda->find('all', array("conditions" => array("Tienda.estatus " => 1, "Tienda.central" => 0), 'order' => 'codigo Asc'));
        $tienda = array();
        $tienda['TODOS'] = 'Todas las Tiendas';
        foreach ($tiendas as $key => $value) {
            $tienda[$value['Tienda']['codigo']] = $value['Tienda']['codigo'] . ' - ' . $value['Tienda']['nombre'];
        }
        $this->set('tienda', $tienda);
    }

    public function listado_filtrado_replica_precio() {
        $this->request->data['ruta'] = ROOT . DS . WEBROOT_DIR . DS . "files" . DS;
        $compactada = $this->serializador($this->request->data, 2); //2 serializa el arreglo
        $this->set('opciones', $compactada);
        $data = $this->request->data;
        extract($this->request->data);
        $id_ven = $this->request->data['vent'];
        $fi = $this->request->data['fecha_i'];
        $vfi = $$fi;
        $ff = $this->request->data['fecha_f'];
        $vff = $$ff;

        $error = 0;
        if ($tipo == 1) {
            if ($this->Vista->empyt($data, array('hfin', $ff))) {
                $error = 1;
            }
        } else if ($tipo == 2) {
            if ($this->Vista->empyt($data)) {
                $error = 1;
            }
        } else {
            if ($this->Vista->empyt($data)) {
                $error = 1;
            }
        }
        if ($error == 1) {
            $this->Vista->mensaje('Faltan Datos que son Requeridos', 'ALERTA');
            $this->set('tienda', null);
            $this->set('data', null);
            $this->set('busq', '');
            $this->set('archivo', null);
            $this->set('busq', '');
            $this->set('ruta', null);
            //$this->set('mostrar',1); // Indica a mensaje que monte el menu superior sin acciones
            //$this->render("../".PRINCIPAL."/mensajes");	
        } else {
            if (empty($vfi) and empty($vff)) {
                $vfi = null;
                $vff = null;
            } else if (!empty($vfi) and empty($vff)) {
                $vfiv = $vfi;
                $vffv = $vfi;
                $vfi = $this->Utilitario->guar_fecha($vfi);
                $vff = $vfi;
            } else if (empty($vfi) and !empty($vff)) {
                $vfiv = $vff;
                $vffv = $vff;
                $vff = $this->Utilitario->guar_fecha($vff);
                $vfi = $vff;
            } else {
                $vfiv = $vfi;
                $vffv = $vff;
                $vfi = $this->Utilitario->guar_fecha($vfi);
                $vff = $this->Utilitario->guar_fecha($vff);
            }
            if ($tipo == 2) {
                if (in_array('TODOS', $this->request->data['tienda'])) {
                    $error = 1;
                    $msj = "Las Replica de Contingencia no puede aplicar a todas las tienda";
                } else {
                    $fhi = "$vfiv $hinicio";
                    $fhf = "$vffv $hfin";
                    $f1 = strtotime($fhi);
                    $f2 = strtotime($fhf);
                    //echo "$fhi = > $f2<br />$fhf $f1<br />";
                    if ($f2 - $f1 < 120) {
                        $error = 1;
                        $msj = "Las fechas son incorrectas";
                    }
                }
            }

            $td = $this->Tienda->find('list', array('fields' => array('Tienda.codigo', 'Tienda.nombre'), 'order' => 'Tienda.id Asc'));
            /* if(in_array('TODOS',$this->request->data['tienda']))
              {
              $array=$this->request->data['tienda'];
              $tienda=$this->Tienda->find('all',array("conditions"=>array("Tienda.estatus "=>1,"Tienda.central"=>0),'order'=>'codigo desc'));
              $array=array();
              for($z=0; $z<count($tienda); $z++)
              {
              $array[]=$tienda[$z]['Tienda']['codigo'];
              }
              }
              else
              {
              $array=$this->request->data['tienda'];
              } */
            $array = $this->request->data['tienda'];
            if ($error == 1) {
                $this->Vista->mensaje($msj, 'ALERTA');
                $this->set('tienda', null);
                $this->set('data', null);
                $this->set('busq', '');
                $this->set('archivo', null);
                $this->set('busq', '');
                $this->set('ruta', null);                
                $this->set('id_formulario', null);
                //$this->set('mostrar',1); // Indica a mensaje que monte el menu superior sin acciones
                //$this->render("../".PRINCIPAL."/mensajes");	
            } else {
                $this->set('tienda_listado', $td);
                $this->set('tienda', $array);
                $this->set('fecha_i', $vfi);
                $this->set('hinicio', $data['hinicio']);
                $this->set('fecha_f', $vff);
                $this->set('hfin', $data['hfin']);
                $this->set('tipo', $data['tipo']);
                $this->set('archivo', $data['archivo']);                      
                $this->set('id_formulario', $id_formulario);
                $this->set('busq', '');
                $this->set('ruta', ROOT . DS . WEBROOT_DIR . DS . "files" . DS);
                $ad = 'files/' . $archivo;
                chmod('files/' . $archivo, 0777);
                $this->Vista->title('Listado de Precios a Replicar');
            }
            //$this->Vista->cerrar_ventana($id_ven);	
        }
    }

    public function procesar_archivo_lista_precio() {
        $data = $this->serializador($this->request->data['opciones'], 1); //1 convierte la cadena serializada en un arreglo
        extract($data);

        $fi = $data['fecha_i'];
        $vfi = $this->Utilitario->guar_fecha($$fi);
        $ff = $data['fecha_f'];
        $vff = $$ff;
        $arch = $data['ruta'] . $data['archivo'];
        $fi = $vfi . ' ' . $data['hinicio'];
        $tiendas_final = implode(",", $data['tienda']);
        $oid = $this->ArchivoPrecios->importar($arch);
        $nom_nue = str_replace("_", " ", $data['archivo']);
        $nom_nue = explode(' ', $nom_nue);
        unset($nom_nue[0]);
        $nom_nue = implode(' ', $nom_nue);
        $cod_tienda_prueba = $data['tienda'][0];
        if ($cod_tienda_prueba == 'TODOS')
            $cod_tienda_prueba = 'T001';
        //$codigos_finales_array=split(' ',$this->request->data['codigos_finales_array']);
        $codigos_finales_array = $this->serializador($this->request->data['codigos_finales_array'], 1);
        $codigos_validados = $this->Query->app('Sigesp', array($cod_tienda_prueba), "select count(codart) as total from siv_articulo where codart in " . $this->request->data['codigos_finales']);
        if (count($codigos_finales_array) == $codigos_validados[0]['total']) {
            if ($data['tipo'] == 1) {
                $tiplista = 'N';
            } else {
                $tiplista = 'C';
                $tiplista2 = 'R';
                $nomb_aux = "Restauracion " . $nom_nue;
                $ff = $this->Utilitario->guar_fecha($vff) . ' ' . $data['hfin'];
                $sql2 = "INSERT INTO pre_archivo_precios(nomarch,fecarch,staarch,objarchxls,fecinicio,tiendas,tiplista) 
			VALUES('" . $nomb_aux . "','now()','N',lo_import('$arch'),'$ff','$tiendas_final','R');";
                $datos2['nomarch'] = $nomb_aux;
                $datos2['fecarch'] = 'now()';
                $datos2['staarch'] = 'N';
                $datos2['objarchxls'] = $oid;
                $datos2['fecinicio'] = $ff;
                $datos2['tiendas'] = $tiendas_final;
                $datos2['tiplista'] = 'R';
                $datos2['nombre_fuente'] = $data['archivo'];
                $datos2['usuario_id']=$this->Interfaz->id($this->Session->read('usuario_id'));
            }
            if (isset($vff) and isset($data['hfin']) && $data['tipo'] != 1) {
                $ff = $this->Utilitario->guar_fecha($vff) . ' ' . $data['hfin'];
                $sql = "INSERT INTO pre_archivo_precios(nomarch,fecarch,staarch,objarchxls,fecinicio,fecfin,tiendas,tiplista) 
			VALUES('" . $data['archivo'] . "','now()','N',lo_import('$arch'),'$fi','$ff','$tiendas_final','$tiplista');";
                $datosf['nomarch'] = $nom_nue;
                $datosf['fecarch'] = 'now()';
                $datosf['staarch'] = 'N';
                $datosf['objarchxls'] = $oid;
                $datosf['fecinicio'] = $fi;
                $datosf['fecfin'] = $ff;
                $datosf['tiendas'] = $tiendas_final;
                $datosf['tiplista'] = $tiplista;
                $datosf['nombre_fuente'] = $data['archivo'];
                $datosf['usuario_id']=$this->Interfaz->id($this->Session->read('usuario_id'));
            } else {
                $sql = "INSERT INTO pre_archivo_precios(nomarch,fecarch,staarch,objarchxls,fecinicio,tiendas,tiplista) 
			VALUES('" . $data['archivo'] . "','now()','N',lo_import('$arch'),'$fi','$tiendas_final','$tiplista');";
                $datosf['nomarch'] = str_replace("_", " ", $data['archivo']);
                $datosf['fecarch'] = 'now()';
                $datosf['staarch'] = 'N';
                $datosf['objarchxls'] = $oid;
                $datosf['fecinicio'] = $fi;
                $datosf['tiendas'] = $tiendas_final;
                $datosf['tiplista'] = $tiplista;
                $datosf['nombre_fuente'] = $data['archivo'];
                $datosf['usuario_id']=$this->Interfaz->id($this->Session->read('usuario_id'));
            }

            $this->ArchivoPrecios->query('BEGIN  WORK');
            $this->PreArchivoPrecios->query('BEGIN  WORK');
            //$this->PrePrecioArticulos->query($sql);
            $df['ArchivoPrecios'] = $datosf;
            if ($this->ArchivoPrecios->save($df)) {
                $ban = 1;
                $id_archivo = $this->ArchivoPrecios->id;
                $datosf['id_original'] = $id_archivo;
                $df2['PreArchivoPrecios'] = $datosf;
                if ($this->PreArchivoPrecios->saveall($df2)) {
                    $id_archivo_foraneo = $this->PreArchivoPrecios->id;
                    if ($data['tipo'] == 2) {
                        //$this->PrePrecioArticulos->query($sql2);
                        $df = null;
                        $df['ArchivoPrecios'] = $datos2;
                        if ($this->ArchivoPrecios->saveall($df)) {
                            $id_archivo2 = $this->ArchivoPrecios->id;
                            $datos2['id_original'] = $id_archivo2;
                            $df2 = null;
                            $df2['PreArchivoPrecios'] = $datos2;
                            if ($this->PreArchivoPrecios->saveall($df2)) {
                                $id_archivo2foraneo = $this->PreArchivoPrecios->id;
                            } else {
                                $ban = 0;
                            }
                        } else {
                            $ban = 0;
                        }
                    }
                    if ($ban) {
                        $datapre = $this->serializador($this->request->data['datos'], 1); //1 convierte la cadena serializada en un arreglo
                        if (in_array('TODOS', $data['tienda'])) {
                           
                            $array = $data['tienda'];
                        } else {
                            $array = $data['tienda'];
                        }
                        $cod_lapzo = $this->Query->app('Sigesp', array($cod_tienda_prueba), "select dias_lapso, codlapso from sfc_lapso");
                        $cod_lapzo_fuente;
                        foreach ($cod_lapzo as $valor) {
                            $cod_lapzo_fuente[trim($valor['dias_lapso'])] = $valor['codlapso'];
                        }
                        for ($j = 0; $j < count($array); $j++) {
                            $cod_tienda = $array[$j];
                            if (is_array($datapre) and count($datapre) > 0)
                                foreach (@$datapre as $valor) {
                                    foreach (@$valor as $linea) {
                                        if ($linea['error_msg'] == 1) {
                                            if ($cod_tienda == 'TODOS')
                                                $cod_buscar = 'T001';
                                            else
                                                $cod_buscar = $cod_tienda;
                                            if (is_numeric($linea['lapzo']))
                                                $cod_lapzo[0]['codlapso'] = $cod_lapzo_fuente[$linea['lapzo']]; //$cod_lapzo=$this->Query->app('Sigesp', array($cod_buscar),"select codlapso from sfc_lapso where dias_lapso='".$linea['lapzo']."'");
                                            else
                                                $cod_lapzo[0]['codlapso'] = $linea['lapzo'];
                                            if (isset($cod_lapzo[0]['codlapso']) && count($cod_lapzo) > 0) {
                                                $lapzo = $cod_lapzo[0]['codlapso'];
                                                $pre_aux = $this->Integrador->query("select interfaces.fnc_consulta_precios('{$cod_tienda}','{$linea['codigo']}', '$lapzo','{$linea['cliente']}','{$linea['programa']}') as precio");
                                                $d = NULL;
                                                $d['PrecioArticulos']['idarch'] = $id_archivo;
                                                $d['PrecioArticulos']['codart'] = $linea['codigo'];
                                                $d['PrecioArticulos']['codtipocli'] = $linea['cliente'];
                                                $d['PrecioArticulos']['codlapso'] = $lapzo;
                                                $d['PrecioArticulos']['codpro'] = $linea['programa'];
                                                $d['PrecioArticulos']['precio'] = $linea['precio'];
                                                $d['PrecioArticulos']['tiplista'] = $tiplista;
                                                $d['PrecioArticulos']['codtiend'] = $cod_tienda;
                                                $d['PrecioArticulos']['fecejec'] = $fi;
                                                $d['PrecioArticulos']['stareg'] = 'N';
                                                $d['PrecioArticulos']['create'] = 'now()';
                                                $d['PrecioArticulos']['precio_antiguo'] = $pre_aux[0][0]['precio'];
                                                if ($this->PrecioArticulos->saveall($d)) {
                                                    $d2 = NULL;
                                                    $d2['PrePrecioArticulos']['idarch'] = $id_archivo_foraneo;
                                                    $d2['PrePrecioArticulos']['codart'] = $linea['codigo'];
                                                    $d2['PrePrecioArticulos']['codtipocli'] = $linea['cliente'];
                                                    $d2['PrePrecioArticulos']['codlapso'] = $lapzo;
                                                    $d2['PrePrecioArticulos']['codpro'] = $linea['programa'];
                                                    $d2['PrePrecioArticulos']['precio'] = $linea['precio'];
                                                    $d2['PrePrecioArticulos']['tiplista'] = $tiplista;
                                                    $d2['PrePrecioArticulos']['codtiend'] = $cod_tienda;
                                                    $d2['PrePrecioArticulos']['fecejec'] = $fi;
                                                    $d2['PrePrecioArticulos']['stareg'] = 'N';
                                                    $d2['PrePrecioArticulos']['create'] = 'now()';
                                                    $d2['PrePrecioArticulos']['precio_antiguo'] = $pre_aux[0][0]['precio'];
                                                    if ($this->PrePrecioArticulos->saveall($d2)) {
                                                        if ($data['tipo'] == 2) {
                                                            $d = NULL;
                                                            $d['PrecioArticulos']['idarch'] = $id_archivo2;
                                                            $d['PrecioArticulos']['codart'] = $linea['codigo'];
                                                            $d['PrecioArticulos']['codtipocli'] = $linea['cliente'];
                                                            $d['PrecioArticulos']['codlapso'] = $lapzo;
                                                            $d['PrecioArticulos']['codpro'] = $linea['programa'];
                                                            $d['PrecioArticulos']['precio'] = $pre_aux[0][0]['precio'];
                                                            $d['PrecioArticulos']['tiplista'] = $tiplista2;
                                                            $d['PrecioArticulos']['codtiend'] = $cod_tienda;
                                                            $d['PrecioArticulos']['fecejec'] = $ff;
                                                            $d['PrecioArticulos']['stareg'] = 'N';
                                                            $d['PrecioArticulos']['create'] = 'now()';
                                                            $d['PrecioArticulos']['precio_antiguo'] = $linea['precio'];
                                                            if ($this->PrecioArticulos->saveall($d)) {
                                                                $d2 = NULL;
                                                                $d2['PrePrecioArticulos']['idarch'] = $id_archivo2foraneo;
                                                                $d2['PrePrecioArticulos']['codart'] = $linea['codigo'];
                                                                $d2['PrePrecioArticulos']['codtipocli'] = $linea['cliente'];
                                                                $d2['PrePrecioArticulos']['codlapso'] = $lapzo;
                                                                $d2['PrePrecioArticulos']['codpro'] = $linea['programa'];
                                                                $d2['PrePrecioArticulos']['precio'] = $pre_aux[0][0]['precio'];
                                                                $d2['PrePrecioArticulos']['tiplista'] = $tiplista2;
                                                                $d2['PrePrecioArticulos']['codtiend'] = $cod_tienda;
                                                                $d2['PrePrecioArticulos']['fecejec'] = $ff;
                                                                $d2['PrePrecioArticulos']['stareg'] = 'N';
                                                                $d2['PrePrecioArticulos']['create'] = 'now()';
                                                                $d2['PrePrecioArticulos']['precio_antiguo'] = $linea['precio'];
                                                                if ($this->PrePrecioArticulos->saveall($d2)) {
                                                                    $ban*=1;
                                                                } else {
                                                                    $ban*=0;
                                                                    break;
                                                                }
                                                            } else {
                                                                $ban*=0;
                                                                break;
                                                            }
                                                        } else {
                                                            $ban*=1;
                                                        }
                                                    } else {
                                                        $ban*=0;
                                                        break;
                                                    }
                                                } else {
                                                    $ban*=0;
                                                    break;
                                                }
                                            }
                                        }
                                    }
                                }
                        }
                    }
                } else {
                    $this->PrePrecioArticulos->query('ROLLBACK');
                    $this->ArchivoPrecios->query('ROLLBACK');
                }
            } else {
                $this->ArchivoPrecios->query('ROLLBACK');
                $this->PreArchivoPrecios->query('ROLLBACK');
            }
            //$ban=0; // esto es para la prueba debo quitarlo;
            if ($ban == 1) {
                $this->log();
                $this->ArchivoPrecios->query('COMMIT');
                $this->PreArchivoPrecios->query('COMMIT');

                $this->Vista->mensaje('Archivo Subido Exitosamente', 'Exito');
                $this->Vista->cerrar_ventana($vent);
            } else {
                $this->ArchivoPrecios->query('ROLLBACK');
                $this->PreArchivoPrecios->query('ROLLBACK');
                $this->Vista->mensaje('Ocurrio un error al Subir el Archivo', 'ALERTA');
            }
        } else {
            $this->Vista->mensaje('Al menos un Codigo de Articulo no existe, por favor Verifica!!!', 'error');
        }
        $this->listado_replicas_de_precios();
        $this->render("listado_replicas_de_precios");
    }

    function listado_replicas_de_precios_ver($div = 'vista', $divlistado = 'vista', $id_archivo = null) {
        if (isset($id_archivo)) {
            $id_archivo = $this->Interfaz->id($id_archivo);
            $this->Vista->title('Listado de Replica de Precios Pendientes');
            $this->set('div', $div);
            $this->set('divlistado', $divlistado);
            $dat = $this->ArchivoPrecios->find('first', array('conditions' => array('ArchivoPrecios.id' => $id_archivo)));
            $this->set('data_archivo', $dat);

            $ruta = "/var/www/sistemas/sisgespdesarrollo/www/files/descargables";

            $sql = "select distinct codart,codpro from precio_articulos where idarch='$id_archivo' order by codart";
            $articulos = $this->PrecioArticulos->query($sql);
            $sql = "select distinct codlapso,codtipocli from precio_articulos where idarch='$id_archivo' order by codtipocli,codlapso";
            $precios = $this->PrecioArticulos->query($sql);
            $precios_final = array();
            for ($y = 0; $y < count($precios); $y++) {
                $cod_lapzo = $this->Query->app('Sigesp', array('T001'), "select dias_lapso from sfc_lapso where codlapso='" . $precios[$y][0]['codlapso'] . "'");
                $precios_final[$y][0]['codlapso'] = $cod_lapzo[0]['dias_lapso'];
                $precios_final[$y][0]['codtipocli'] = $precios[$y][0]['codtipocli'];
            }
            $datos = array();
            for ($i = 0; $i < count($articulos); $i++) {
                $codi = $articulos[$i][0]['codart'];
                $codp = $articulos[$i][0]['codpro'];
                for ($j = 0; $j < count($precios); $j++) {
                    $lapzo = $precios[$j][0]['codlapso'];
                    $cli = $precios[$j][0]['codtipocli'];
                    $sql = "select codart,codtipocli,codlapso,codpro,precio from precio_articulos where idarch='$id_archivo' and codpro='$codp' and codart='$codi' and codlapso='$lapzo' and codtipocli='$cli' limit 1";
                    $res = $this->PrecioArticulos->query($sql);
                    if (!isset($res[0][0])) {
                        $res[0][0]['codart'] = null;
                        $res[0][0]['codtipocli'] = null;
                        $res[0][0]['codlapso'] = null;
                        $res[0][0]['codpro'] = null;
                        $res[0][0]['precio'] = null;
                    }
                    $datos[$i][$j] = $res[0][0];
                }
            }
            $this->set('precios', $precios_final);
            $this->set('data', $datos);
            $this->set('busq', '');
            $this->log();
        } else {
            $this->set('data_archivo', null);
            $this->set('data', null);
            $this->set('busq', '');
        }
    }

    function excutar_replicas_de_precios($id_archivo = null) {
        if (isset($id_archivo)) {
            $id_archivo = $this->Interfaz->id($id_archivo);
            $this->Vista->title('Ejecutar de Replica de Precios Pendiente');

            $dat = $this->ArchivoPrecios->find('first', array('conditions' => array('ArchivoPrecios.id' => $id_archivo, 'ArchivoPrecios.staarch' => 'N')));
            if (count($dat) > 0) {
                $msj = "Ocurrio un Error Ejecutando Replica";
                $this->ArchivoPrecios->query("UPDATE archivo_precios set staarch='E' WHERE id=$id_archivo");
                $pre_aux = $this->Integrador->query("select interfaces.fnc_ejecucion_precios($id_archivo) as resultado");
                $this->PreArchivoPrecios->query("UPDATE pre_archivo_precios set staarch='E' WHERE id_original=$id_archivo");
                $this->log();
                if ($pre_aux[0][0]['resultado']) {//$pre_aux
                    $this->ArchivoPrecios->query("UPDATE archivo_precios set staarch='L' WHERE id=$id_archivo");
                    $this->PreArchivoPrecios->query("UPDATE pre_archivo_precios set staarch='L' WHERE id_original=$id_archivo");
                    $this->log();
                    $msj = "Replica Ejecutada sastifactoriamente";
                } else {
                    $this->ArchivoPrecios->query("UPDATE archivo_precios set staarch='N' WHERE id=$id_archivo");
                }
                $this->Vista->mensaje($msj, 'Informacion');
            } else {
                $this->Vista->mensaje('La replica esta siendo Ejecutada en este Instante, o ya Fue Ejecutada!!!', 'Informacion');
            }
        }
        $this->listado_replicas_de_precios();
        $this->render('listado_replicas_de_precios');
    }

    function anular_replicas_de_precios($id_archivo = null) {
        if (isset($id_archivo)) {
            $id_archivo = $this->Interfaz->id($id_archivo);
            $dat = $this->ArchivoPrecios->find('first', array('conditions' => array('ArchivoPrecios.id' => $id_archivo, 'ArchivoPrecios.staarch' => 'N')));
            if (count($dat) > 0) {
                $sql = "UPDATE archivo_precios set staarch='A', estatus='3' where id=$id_archivo";
                $this->ArchivoPrecios->Query($sql);
                $sql = "UPDATE pre_archivo_precios set staarch='A' where id_original=$id_archivo";
                $this->PreArchivoPrecios->Query($sql);
                $this->log();
                $this->Vista->mensaje('Archivo Anulado Exitosamente', 'Exito');
            } else {
                $this->Vista->mensaje('No se encontro el Archivo Para Anular', 'Error');
            }
        }
        $this->listado_replicas_de_precios();
        $this->render('listado_replicas_de_precios');
    }

    function bajar_archivo_replica_precios($archivo, $nombre) {
        if (!empty($archivo)) {
            $nombre = str_replace(" ", "_", $nombre);
            $this->set('ruta', ROOT . DS . WEBROOT_DIR . DS . "files" . DS . $archivo);
            $this->set('nombre', $nombre);
        } else {
            $this->set('ruta', null);
            $this->set('nombre', null);
        }
    }

    public function ver_detalles_error($tipo) {
        if ($tipo == 1) {
            $errores = $this->Session->read('errores_precios');
            $titulo = 'Errores En El Archivo';
        } else {
            $errores = $this->Session->read('precios_omitidos');
            $titulo = 'Precios que se Omitiran';
        }
        $this->set('errores', $errores);
        $this->set('titulo', $titulo);
    }

    function listado_replicas_de_precios_log($div = 'vista', $divlistado = 'vista', $id_archivo = null) {
        if (isset($id_archivo)) {
            $id_archivo = $this->Interfaz->id($id_archivo);
            $this->Vista->title('Listado de LOG Replica de Precios');
            $this->set('div', $div);
            $this->set('divlistado', $divlistado);
            $dat = $this->ArchivoPrecios->find('first', array('conditions' => array('ArchivoPrecios.id' => $id_archivo)));
            $this->set('data_archivo', $dat);

            $logs = $this->LogPrecio->find('all', array("conditions" => array("LogPrecio.idarch " => $id_archivo)));
            $this->set('logs', $logs);
            $this->set('busq', '');
            $this->log();
        } else {
            $this->set('logs', null);
            $this->set('data_archivo', null);
            $this->set('busq', '');
        }
    }

    function listado_replicas_de_precios_ver_precios($div = 'vista', $divlistado = 'vista', $id_archivo = null) {
        if (isset($id_archivo)) {
            $id_archivo = $this->Interfaz->id($id_archivo);
            $this->Vista->title('Listado de Replica de Precios Pendientes');
            $this->set('div', $div);
            $this->set('divlistado', $divlistado);
            $dat = $this->ArchivoPrecios->find('first', array('conditions' => array('ArchivoPrecios.id' => $id_archivo)));
            $this->set('data_archivo', $dat);

            $ruta = "/var/www/sistemas/sisgespdesarrollo/www/files/descargables";

            $sql = "select distinct codart,codpro from precio_articulos where idarch='$id_archivo' order by codart";
            $articulos = $this->PrecioArticulos->query($sql);
            $sql = "select distinct codlapso,codtipocli from precio_articulos where idarch='$id_archivo' order by codtipocli,codlapso";
            $precios = $this->PrecioArticulos->query($sql);
            $precios_final = array();
            for ($y = 0; $y < count($precios); $y++) {
                $cod_lapzo = $this->Query->app('Sigesp', array('T001'), "select dias_lapso from sfc_lapso where codlapso='" . $precios[$y][0]['codlapso'] . "'");
                $precios_final[$y][0]['codlapso'] = $cod_lapzo[0]['dias_lapso'];
                $precios_final[$y][0]['codtipocli'] = $precios[$y][0]['codtipocli'];
            }
            $datos = array();
            for ($i = 0; $i < count($articulos); $i++) {
                $codi = $articulos[$i][0]['codart'];
                $codp = $articulos[$i][0]['codpro'];
                for ($j = 0; $j < count($precios); $j++) {
                    $lapzo = $precios[$j][0]['codlapso'];
                    $cli = $precios[$j][0]['codtipocli'];
                    $sql = "select codart,codtipocli,codlapso,codpro,precio,precio_antiguo from precio_articulos where idarch='$id_archivo' and codpro='$codp' and codart='$codi' and codlapso='$lapzo' and codtipocli='$cli' limit 1";
                    $res = $this->PrecioArticulos->query($sql);
                    if (!isset($res[0][0])) {
                        $res[0][0]['codart'] = null;
                        $res[0][0]['codtipocli'] = null;
                        $res[0][0]['codlapso'] = null;
                        $res[0][0]['codpro'] = null;
                        $res[0][0]['precio'] = null;
                        $res[0][0]['precio_antiguo'] = null;
                    }
                    $datos[$i][$j] = $res[0][0];
                }
            }
            $this->set('precios', $precios_final);
            $this->set('data', $datos);
            $this->set('busq', '');
            $this->log();
        } else {
            $this->set('data_archivo', null);
            $this->set('data', null);
            $this->set('busq', '');
        }
    }

/////////FIN REPLICA DE PRECIOS//////////////////////////////
    
    public function reporte_general() {
        $this->permisos_menu_individual('REPORTES GENERALES'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
        $this->Vista->title('Reportes General');
        $this->bloquear_buscador();

    }

    public function reporte_general_filtro() {
        $this->Vista->title('Listado con Filtros');
        $tiendas = $this->Tienda->find('all', array("conditions" => array("Tienda.estatus " => 1, "Tienda.central" => 0), 'order' => 'codigo Asc'));
        $tienda = array();
        $tienda['TODOS'] = 'Todas las Tiendas';
        foreach ($tiendas as $key => $value) {
            $tienda[$value['Tienda']['codigo']] = $value['Tienda']['codigo'] . ' - ' . $value['Tienda']['nombre'];
        }
        $this->set('tienda', $tienda);
    }

    public function reporte_general_tipo_reporte($tipo){
        $this->set('tipo', $tipo);
    }

    public function reporte_general_busqueda() {
        if (!$this->Vista->empyt($this->request->data)) {
            if((in_array($this->request->data['tipo_reporte'], array(2, 4))) && (strlen($this->request->data['cliente']) < 5)) {
                $this->Vista->mensaje("Campo Cliente, mínimo 5 dígitos", 'ERROR');
                $this->render("../" . PRINCIPAL . "/mensajes");
            } else {
                $reporte = $this->serializador($this->request->data, 2);
                $this->set('data', $reporte);
                $this->set('tipo_reporte', $this->request->data['tipo_reporte']);
            }
        } else {
            $this->Vista->mensaje("Faltan campos requeridos", 'ERROR');
            $this->render("../" . PRINCIPAL . "/mensajes");
        }
    }

    public function reporte_general_excel($ext = 1, $data) {
        $data = $this->serializador($data, 1);
        extract($data);
        $vfi = $$fecha_i;
        $vff = $$fecha_f;

        $td = $this->Tienda->find('list', array('fields' => array('Tienda.codigo', 'Tienda.nombre'), 'order' => 'Tienda.id Asc'));
        if (in_array('TODOS', $tienda)) {
            $tienda = $this->Tienda->find('all', array("conditions" => array("Tienda.estatus " => 1, "Tienda.central" => 0), 'order' => 'codigo desc'));
            $array = array();
            for ($z = 0; $z < count($tienda); $z++) {
                $array[] = $tienda[$z]['Tienda']['codigo'];
            }
        } else
            $array = $tienda;

        if (empty($vfi) and empty($vff)) {
            $vfi = null;
            $vff = null;
        } else if (!empty($vfi) and empty($vff)) {
            $vfi = $this->Utilitario->guar_fecha($vfi);
            $vff = $vfi;
        } else if (empty($vfi) and !empty($vff)) {
            $vff = $this->Utilitario->guar_fecha($vff);
            $vfi = $vff;
        } else {
            if ($this->diferencias_dias($this->Utilitario->guar_fecha($vfi), $this->Utilitario->guar_fecha($vff)) < 0) {
                $a_ = $vfi;
                $vfi = $this->Utilitario->guar_fecha($vff);
                $vff = $this->Utilitario->guar_fecha($a_);
            } else {
                $vfi = $this->Utilitario->guar_fecha($vfi);
                $vff = $this->Utilitario->guar_fecha($vff);
            }
        }

        switch ($tipo_reporte) {
            case 1:
                $sql = "SELECT (SELECT t.codtiend || ' - '|| t.dentie FROM sfc_tienda t WHERE ar.codtiend = t.codtiend ) AS agencia,
                            ar.cod_arqueo, ar.cod_caja, ar.codusu, ar.fecarq AS fecha_arqueo,
                            (SELECT COALESCE(sum(dtar.monto),0) FROM sfc_dt_arqueocaja dtar WHERE ar.cod_arqueo=dtar.cod_arqueo AND  dtar.codforpag ='01' ) AS efectivo,
                            (SELECT COALESCE(sum(dtar.monto),0) FROM sfc_dt_arqueocaja dtar WHERE ar.cod_arqueo=dtar.cod_arqueo AND  dtar.codforpag ='02' ) AS cheque,
                            (SELECT COALESCE(sum(dtar.monto),0) FROM sfc_dt_arqueocaja dtar WHERE ar.cod_arqueo=dtar.cod_arqueo AND  dtar.codforpag ='05' ) AS deposito,
                            (SELECT COALESCE(sum(dtar.monto),0) FROM sfc_dt_arqueocaja dtar WHERE ar.cod_arqueo=dtar.cod_arqueo AND  dtar.codforpag ='10' ) AS TDD,
                            (SELECT COALESCE(sum(dtar.monto),0) FROM sfc_dt_arqueocaja dtar WHERE ar.cod_arqueo=dtar.cod_arqueo AND  dtar.codforpag ='11' ) AS TDC,
                            (SELECT COALESCE(sum(dtar.monto),0) FROM sfc_dt_arqueocaja dtar WHERE ar.cod_arqueo=dtar.cod_arqueo AND  dtar.codforpag ='12' ) AS TDDE,
                            (SELECT COALESCE(sum(ins.montoret),0) FROM sfc_instpago ins, sfc_factura fac WHERE fac.numfac=ins.numfac AND cc.codciecaj = fac.codciecaj AND fac.fecemi::date BETWEEN '$vfi' AND '$vff'
                                AND ins.codforpag ='10') AS Porc_Ret_Debito,
                            (SELECT COALESCE(sum(ins.montoret),0) FROM sfc_instpago ins, sfc_factura fac WHERE fac.numfac=ins.numfac AND cc.codciecaj = fac.codciecaj AND fac.fecemi::date BETWEEN '$vfi' AND '$vff'
                                AND ins.codforpag ='11') AS Porc_Ret_Credito,
                            (SELECT COALESCE(sum(ins.montoret_islr),0) FROM sfc_instpago ins, sfc_factura fac WHERE fac.numfac=ins.numfac AND cc.codciecaj = fac.codciecaj AND fac.fecemi::date BETWEEN '$vfi' AND '$vff'
                                AND ins.codforpag ='11') AS Porc_Ret_ISRL,
                            (SELECT COALESCE(sum(ins.monto),0) FROM sfc_instpago ins, sfc_factura fac WHERE fac.numfac=ins.numfac AND cc.codciecaj = fac.codciecaj AND fac.fecemi::date BETWEEN '$vfi' AND '$vff'
                                AND ins.codforpag ='04' AND ins.id_entidad = '1' AND ins.codban='220') AS Arrime,
                            (SELECT COALESCE(sum(ins.monto),0) FROM sfc_instpago ins, sfc_factura fac WHERE fac.numfac=ins.numfac AND cc.codciecaj = fac.codciecaj AND fac.fecemi::date BETWEEN '$vfi' AND '$vff'
                                AND ins.codforpag ='04' AND ins.id_entidad = '1' AND ins.codban='221') AS Credito_FondAS,
                                (SELECT COALESCE(sum(ins.monto),0) FROM sfc_instpago ins, sfc_factura fac WHERE fac.numfac=ins.numfac AND cc.codciecaj = fac.codciecaj AND fac.fecemi::date BETWEEN '$vfi' AND '$vff'
                                AND ins.codforpag ='04' AND ins.id_entidad = '2' AND ins.codban='205') AS Credito_BAV,
                            (SELECT COALESCE(sum(ins.monto),0) FROM sfc_instpago ins, sfc_factura fac WHERE fac.numfac=ins.numfac AND cc.codciecaj = fac.codciecaj AND fac.fecemi::date BETWEEN '$vfi' AND '$vff'
                                AND ins.codforpag ='03' AND ins.id_entidad = '0') AS Creditos_Varios,
                                (SELECT COALESCE(sum(dtar.monto),0) FROM sfc_dt_arqueocaja dtar WHERE ar.cod_arqueo=dtar.cod_arqueo ) AS monto_total
                        FROM sfc_arqueocaja ar, sfc_cierrecaja cc
                        WHERE ar.status='R' AND ar.fecarq::date BETWEEN '$vfi' AND '$vff' AND ar.cod_arqueo = cc.cod_arqueo";
            break;
            case 2:
            case 3:
            case 4:
                $sql = "SELECT (SELECT codtiend || '-' || dentie FROM sfc_tienda) AS agencia, c.cedcli, c.codclisap, c.razcli, 
                            f.numfac AS documento, 
                            CASE WHEN f.estfaccon='C' 
                                THEN 'CANCELADA' 
                            WHEN f.estfaccon='A' 
                                THEN 'ANULADA' 
                            ELSE 'OTRO' END AS estatus, 
                            CASE WHEN f.TIPFAC='F' 
                                THEN 'FLETE' 
                            WHEN f.TIPFAC='N' 
                                THEN 'NORMAL' 
                            ELSE 'OTRO' END AS tipo, f.fecemi::date, a.codart, a.denart, df.canpro, df.prepro 
                        FROM sfc_detfactura df 
                        INNER JOIN sfc_factura f ON f.numfac = df.numfac 
                        INNER JOIN sfc_cliente c ON c.codcli = f.codcli 
                        INNER JOIN siv_articulo a ON a.codart = df.codart 
                        WHERE f.fecemi::date BETWEEN '$vfi' AND '$vff' ";
                if(!empty($cliente))
                    $sql .= "AND (c.cedcli ILIKE '%$cliente%' OR c.codclisap ILIKE '%$cliente%') ";
                if(!empty($producto)) {
                    $x = substr($producto, 0, -1);
                    $sql .= "AND a.codart IN($x) ";
                }
            break;
        }

        switch ($formato_reporte) {
            case 1:
                $data = $this->Query->app('Sigesp', $array, $sql);
            break;
            case 2:
                $data = $this->Query->app_tienda('Sigesp', $array, $sql);
            break;
        }
        $this->set('tienda_buscar', $array);
        $this->set('tienda', $td);        
        $this->set('data', $data);
        $this->set('ext', $ext);
        $this->set('tipo', $formato_reporte);
        $this->set('tipo_reporte', $tipo_reporte);
        $this->set('fechas', array($vfi, $vff));

        switch ($tipo_reporte) {
            case 1:
                $this->render('reporte_general_excel_cierre_caja');
            break;
        }
    }

    public function reporte_general_buscar_material() {

    }

    public function reporte_general_listado_buscador_material($vent = null, $div = null, $para = null) {
        if (isset($para) && !empty($para)) {
            $condiciones['Material.id >'] = 0;
            $sql = "SELECT codart, denart FROM siv_articulo WHERE denart ILIKE '%$para%' OR codart ILIKE '%$para%' ORDER BY denart LIMIT 500";
            $data = $this->Query->app('Sigesp', array('T001'), $sql);
            $this->set('data', $data);
            $this->set('busq', $para);
            $this->set('vent', $vent);
        } else {
            $this->set('data', null);
            $this->set('busq', '');
            $this->set('vent', $vent);
        }
        echo "<script type='text/javascript'>document.getElementById('$div').style.display='block';</script>";
        $this->set('vent', $vent);
    }

    public function reporte_general_actualizar_material($codigo = null) {
        $codigo = $this->Interfaz->id($codigo);
        echo "<script type='text/javascript'>
                aux = document.getElementById('producto').value;
                aux = aux + \"'$codigo'\" + \",\";
                document.getElementById('producto').value = aux;
            </script>";
        $this->render("../" . PRINCIPAL . "/mensajes");
    }

    public function bloqueo_clientes() {
        $this->permisos_menu_individual('BLOQUEO DE CLIENTES');
    }
    
    public function bloqueo_clientes_filtro() {
        $this->Vista->title('Listado con Filtros');
        $tiendas = $this->Tienda->find('all', array("conditions" => array("Tienda.estatus " => 1, "Tienda.central" => 0), 'order' => 'codigo Asc'));
        $tienda = array();
        //$tienda['TODOS'] = 'Todas las Tiendas';
        foreach ($tiendas as $key => $value) {
            $tienda[$value['Tienda']['codigo']] = $value['Tienda']['codigo'] . ' - ' . $value['Tienda']['nombre'];
        }
        $this->set('tiendas', $tienda);
    }
    
    public function bloqueo_clientes_busqueda() {
        $this->permisos_menu_individual('BLOQUEO DE CLIENTES');
        $this->permisos_accion_individual('bloqueo de clientes','filtro');
        if($this->request->data){
            extract($this->request->data);
            if(!empty($cliente) and !empty($tiendas)){
                $sql = "SELECT (SELECT codtiend || ' - '|| dentie FROM sfc_tienda) AS agencia, cedcli, (CASE WHEN trim(codclisap) = '' THEN 'NO TIENE' ELSE codclisap END), razcli, staclidel FROM sfc_cliente WHERE cedcli ILIKE '%$cliente%'";
                $data = $this->Query->app('Sigesp', $tiendas, $sql);
                $this->Vista->cerrar_ventana($id_vent);
                $this->set('data', $data);
            }else{
                $this->Vista->mensaje('Faltan campos por procesar', 'ERROR');
            }
        }else{
            $this->Vista->mensaje('Ocurrio un error, vuelva a intentarlo', 'ERROR');
        }
    }
    
    public function bloqueo_clientes_actualizacion($cedula, $status, $tienda) {
        $this->permisos_opcion_individual('bloqueo de clientes','filtro','modificar');
        $ced = $this->Interfaz->id($cedula);
        $tienda = substr($tienda,0,4);
        $sql = "SELECT staclidel FROM sfc_cliente WHERE cedcli='$ced'";
        $data = $this->Query->app('Sigesp', array($tienda), $sql);

        if($data[0]['staclidel']==0){
            $sql = "UPDATE sfc_cliente SET staclidel='1' WHERE cedcli='$ced'";
            $data = $this->Query->app('Sigesp', array($tienda), $sql);
            $this->set('ced', $ced);
            $this->set('status', '1');
        }else{
            $sql = "UPDATE sfc_cliente SET staclidel='0' WHERE cedcli='$ced'";
            $data = $this->Query->app('Sigesp', array($tienda), $sql);
            $this->set('ced', $ced);
            $this->set('status', '0');
        }
        
    }

    public function control_asistencias() {
        $this->permisos_menu_individual('CONTROL DE ASISTENCIAS');
        $this->bloquear_buscador();
        $filtro = $this->Biometrico->find('first');
        $omitir = (!$filtro['Biometrico']['ids_omitir']=='') ? trim($filtro['Biometrico']['ids_omitir']) : 0;
        $no_laboral = (!$filtro['Biometrico']['no_laboral']=='') ? trim($filtro['Biometrico']['no_laboral']) : 0;
        $sql = "SELECT * FROM consulta_biometrico((now() - interval '15 day')::date,now()::date,'".$filtro['Biometrico']['h_entrada']."', '".$filtro['Biometrico']['h_salida']."', '".$filtro['Biometrico']['h_extra']."','".$filtro['Biometrico']['criterios']."','".$filtro['Biometrico']['semana']."', '0', '".$no_laboral."', '".$omitir."', 1) AS (id bigint,departamento text ,cedula text,nombres text,fecha date,dia text,entrada character varying(10),salida character varying(10),difencia_entrada text,diferencia_salida text,sobretiempo text);";
        $data = $this->Biometrico->query($sql);
        $this->set('data', $data);
    }
    
    public function control_asistencias_filtro() {
        $this->permisos_accion_individual('CONTROL DE ASISTENCIAS','FILTRO');
        $filtro = $this->Biometrico->find('first', array("conditions" => array("usuario" => $this->Session->read('username'))));
        if(!empty($filtro)){
            $this->set('filtro', $filtro);
        }else{
            $this->set('filtro', null);
        }
    }
    
    public function control_asistencias_busqueda_filtro(){
        $this->permisos_menu_individual('CONTROL DE ASISTENCIAS');
        $this->bloquear_buscador();
        extract($this->request->data);
        if (!filter_var($ip_servidor, FILTER_VALIDATE_IP)) {
            $this->Vista->mensaje("Esta dirección IP ($ip_servidor) NO es válida.", 'ERROR');
        }
        $filtro = $this->Biometrico->find('first', array("conditions" => array("usuario" => $this->Session->read('username'))));
        if(!empty($filtro)){ $datos['id'] = $filtro['Biometrico']['id']; }
        $datos['ip_servidor'] = trim($ip_servidor);
        $datos['f_inicio'] = date('Y-m-d', strtotime($f_inicio));
        $datos['f_fin'] = date('Y-m-d', strtotime($f_fin));
        $datos['h_entrada'] = $h_entrada;
        $datos['h_salida'] = $h_salida;
        $datos['criterios'] = $criterios;
        $datos['cedula'] = $cedula;
        $datos['h_extra'] = $h_extra;
        $datos['semana'] = implode(',', $semana);
        $datos['no_laboral'] = !empty($NoLaboral) ? trim($NoLaboral) : 0;
        $datos['ids_omitir'] = !empty($omitir) ? trim($omitir) : 0;
        $datos['usuario'] = $this->Session->read('username');
        if($this->Biometrico->save($datos)){
            $sql = "SELECT * FROM consulta_biometrico('".$datos['f_inicio']."', '".$datos['f_fin']."', '".$datos['h_entrada']."', '".$datos['h_salida']."', '".$datos['h_extra']."', '".$datos['criterios']."', '".$datos['semana']."', '".$datos['cedula']."', '".$datos['no_laboral']."', '".$datos['ids_omitir']."', 1) AS (id bigint,departamento text ,cedula text,nombres text,fecha date,dia text,entrada character varying(10),salida character varying(10),difencia_entrada text,diferencia_salida text,sobretiempo text);";
            $data = $this->Biometrico->query($sql);
            $this->set('data', $data);
            $this->Vista->cerrar_ventana($vent_filtro);
        }else{
            $this->Vista->mensaje("Ocurrio un problema al guardar, vuelva a intentarlo.", 'ERROR');
        }
    }
    
    public function control_asistencias_reporte($ced) {
        $this->permisos_accion_individual('CONTROL DE ASISTENCIAS','PDF');
        $filtro = $this->Biometrico->find('first', array("conditions" => array("usuario" => $this->Session->read('username'))));
        if(!empty($filtro)) {
            $datos = $filtro['Biometrico'];
            $cedula = ($ced!='descargar') ? $ced : $datos['cedula'];

            $sql = "SELECT * FROM consulta_biometrico('".$datos['f_inicio']."', '".$datos['f_fin']."', '".$datos['h_entrada']."', '".$datos['h_salida']."', '".$datos['h_extra']."', '".$datos['criterios']."', '".$datos['semana']."', '".$cedula."', '".$datos['no_laboral']."', '".$datos['ids_omitir']."') AS (id bigint,departamento text ,cedula text,nombres text,fecha date,dia text,entrada character varying(10),salida character varying(10),diferencia_entrada text,diferencia_salida text,sobretiempo text);";
            $data = $this->Biometrico->query($sql);

            if(!empty($data)) {
                 $this->set('valores', $data);
                 $this->set('filtro', $datos);
                 $this->set('ced', $ced);

                $clasePDF = new generarPDF();
                
                $this->set('clasePDF', $clasePDF);

                //exit('<img style="position: relative;" src="'. $rutaImagenes .'agropatria2.png" width="800px" height="100px"></img>');

            }
            else {
                $this->Vista->mensaje("No existen datos registrados", 'ERROR');
                $this->render("../".PRINCIPAL."/mensajes");  
            }           
        }
        else {
            $this->Vista->mensaje("No existe alguna configuracion, por favor cargue alguna", 'ERROR');
            $this->render("../".PRINCIPAL."/mensajes");
        }
    }
    
    public function ajuste_inventario_listado() {
        $this->permisos_menu_individual('AJUSTE DE INVENTARIO'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
        $this->Vista->title('Ajuste de Inventario');
        $this->bloquear_buscador(2);
        $data = $this->AjusteInventario->query("SELECT codtiend, COUNT(codart) AS cant_art FROM tbl_ajustes_sistema GROUP BY codtiend ORDER BY 1");
        $listaCant = $this->ControlInventario->find('list', array('fields' => array('codtiend', 'cant')));
        $this->set('data', $data);
        $this->set('listaCant', $listaCant);
        $this->set('busq', '');
    }
    
    public function ajuste_inventario_nuevo() {
        $this->permisos_accion_individual('AJUSTE DE INVENTARIO', 'nuevo');
        $this->Tienda->virtualFields['nombrecompleto'] = 'Tienda.codigo || \' - \' || Tienda.nombre';
        $listaTiendas = $this->Tienda->find('list', array('fields' => array('Tienda.codigo', 'Tienda.nombrecompleto'), 'conditions' => array('Tienda.estatus' => 1), 'order' => 'Tienda.id Asc'));
        $this->set('listaTiendas', $listaTiendas);
    }
    
    public function ajuste_inventario_subir($div = 'vista', $divlistado = 'vista') {
        $this->set('div', $div);
        $this->set('divlistado', $divlistado);
        $this->Vista->title('Subir Archivo Ajuste Inventario');
    }
    
    public function ajuste_inventario_revisar() {
        $this->request->data['ruta'] = ROOT . DS . WEBROOT_DIR . DS . "files" . DS;
        $compactada = $this->serializador($this->request->data, 2); //2 serializa el arreglo
        $this->set('opciones', $compactada);
        $data = $this->request->data;
        extract($this->request->data);
        if (!$this->Vista->empyt($data, array())) {
            $ruta = ROOT . DS . WEBROOT_DIR . DS . "files" . DS;
            chmod("files/$archivo", 0777);
            $this->Vista->title('Ajuste de Inventario a Realizar');
        } else {
            $archivo = $ruta = $id_formulario = null;
            $this->Vista->mensaje("Faltan campos requeridos", 'ERROR');
        }
        
        $this->set('tienda', $tienda);
        $this->set('id_formulario', $id_formulario);
        $this->set('archivo', $archivo);
        $this->set('ruta', $ruta);
        $this->set('busq', '');
    }
    
    public function ajuste_inventario_procesar() {
        extract($this->request->data);
        $dataLimpia = $this->serializador($datos, 1);
        $dataGuardar = array();
        $sql = "INSERT INTO tbl_ajustes_sistema (codart, descripcion, codtiend, cantidad_sap, lote, unidad) VALUES ";
        foreach($dataLimpia as $indice => $valor) {
            $valor["C".$indice] = str_replace("'", '', $valor["C".$indice]);
            $valor["E".$indice] = str_replace(".", '', $valor["E".$indice]);
            $valor["E".$indice] = str_replace(",", '.', $valor["E".$indice]);
            $valor["F".$indice] = trim($valor["F".$indice]);
            $sql .= "('{$valor["B".$indice]}', '{$valor["C".$indice]}', '{$valor["D".$indice]}', {$valor["E".$indice]}, '{$valor["F".$indice]}','{$valor["G".$indice]}'), ";
        }
        $sql = addslashes($sql);
        $sql = substr($sql, 0, -2);
        $sql = str_replace('\0', '', $sql);
        $sql = stripslashes($sql);
        $this->AjusteInventario->query('BEGIN WORK');
        $this->AjusteInventario->query("DELETE FROM tbl_ajustes_sistema WHERE codtiend ILIKE '%$tienda%'");
        $this->AjusteInventario->query($sql);
        $this->AjusteInventario->query('COMMIT');
        $resultado = $this->AjusteInventario->query("SELECT * FROM fnc_comparar_inventario('$tienda') AS (id bigint, codart character varying(20), descripcion character varying(1000),  codtiend character varying(4),  lote character(255), unidad character varying(20), cantidad_sap double precision, cantidad_sigesp double precision,  diferencia double precision, tipo integer)");
        if(empty($resultado)) {
            $this->Vista->mensaje("No hay materiales para ajustar", 'ERROR');
            $this->render("../".PRINCIPAL."/mensajes");
        } else if($resultado[0][0]['tipo'] == 5)
            $this->Vista->mensaje("Uno o mas materiales no estan creados en la tienda", 'ERROR');
            
        $this->set('data', $resultado);
        $this->set('tienda', $tienda);
        $this->set('busq', '');
    }
    
    public function ajuste_inventario_ejecutar($tienda, $cant = 0) {
        $resultado = $this->ControlInventario->find('first', array('conditions' => array('ControlInventario.codtiend' => $tienda, 'ControlInventario.estatus' => 1)));
        if(empty($resultado)) {
            $this->AjusteInventario->query("SELECT * FROM fnc_generar_inventario('$tienda') AS (sql text)");
            $datos = array();
            $datos['codtiend'] = $tienda;
            $datos['cant'] = $cant;
            $this->ControlInventario->save($datos);
            $this->Vista->mensaje("Ajuste realizado exitosamente", 'EXITO');
        } else
            $this->Vista->mensaje("El Ajuste ya fue realizado anteriormente", 'ERROR');
        $this->render("../".PRINCIPAL."/mensajes");
    }
    
    public function ajuste_inventario_excel($tienda, $tipo = 1, $codigos = null) {
        $codigos = $this->serializador($codigos, 1);
        if(!empty($codigos) && ($codigos[0] != 'nada')) {
            $sql = "SELECT * FROM tbl_ajustes_sistema WHERE codtiend = '$tienda' AND cantidad_sap != cantidad_sigesp WHERE";
            foreach($codigos as $valor) {
                $sql .= " codart ILIKE '%$valor' OR";
            }
            $sql = substr($sql, 0, -3);
            $resultado = $this->AjusteInventario->query($sql);
        } else {
            $resultado = $this->AjusteInventario->query("SELECT * FROM tbl_ajustes_sistema WHERE codtiend = '$tienda' AND cantidad_sap != cantidad_sigesp ORDER BY codart");
        }
        $this->set('tipo', $tipo);
        $this->set('data', $resultado);
        $this->set('tienda', $tienda);
    }

}